annotate cmake/function/MalikaniaDefineExecutable.cmake @ 205:c973501abe36

windows: many fixes for MinGW and VS While here, add more options to malikania_define_library and do not put include directories to assets. Also remove some useless bits.
author David Demelier <markand@malikania.fr>
date Thu, 29 Nov 2018 12:57:30 +0100
parents 0a285d62ace7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 # MalikaniaDefineExecutable.cmake -- CMake build system for malikania
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 #
158
4b292c20124c Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 141
diff changeset
4 # Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 # Permission to use, copy, modify, and/or distribute this software for any
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 # purpose with or without fee is hereby granted, provided that the above
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 # copyright notice and this permission notice appear in all copies.
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 # malikania_define_executable
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 # ---------------------------
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 # malikania_define_executable(
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
24 # TARGET The target name
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
25 # FOLDER Specify alternate folder
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
26 # SOURCES The list of sources
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
27 # FLAGS (Optional) List of flags
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
28 # INCLUDES (Optional) List of include directories
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
29 # LIBRARIES (Optional) List of libraries
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 # )
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents: 165
diff changeset
33 include(${CMAKE_CURRENT_LIST_DIR}/MalikaniaBuildAssets.cmake)
54
0edaba9986ba CMake: add vera++, closes 602
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
34
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 function(malikania_define_executable)
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
36 set(singleArgs FOLDER TARGET)
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
37 set(multiArgs ASSETS SOURCES FLAGS INCLUDES LIBRARIES)
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
38
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
39 cmake_parse_arguments(EXE "" "${singleArgs}" "${multiArgs}" ${ARGN})
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
41 if (NOT EXE_TARGET)
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
42 message(FATAL_ERROR "Missing TARGET parameter")
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
43 endif ()
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
44 if (NOT EXE_SOURCES)
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
45 message(FATAL_ERROR "Missing SOURCES parameter")
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
46 endif ()
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
48 malikania_build_assets("${EXE_ASSETS}" assets)
182
3107ce017c3a Misc: switch back to SDL
David Demelier <markand@malikania.fr>
parents: 165
diff changeset
49
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
50 add_executable(${EXE_TARGET} ${EXE_SOURCES} ${EXE_ASSETS} ${assets})
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
51 target_link_libraries(${EXE_TARGET} ${EXE_LIBRARIES})
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
52 target_include_directories(
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
53 ${EXE_TARGET}
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
54 PRIVATE
205
c973501abe36 windows: many fixes for MinGW and VS
David Demelier <markand@malikania.fr>
parents: 200
diff changeset
55 ${CMAKE_CURRENT_BINARY_DIR}
183
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
56 ${EXE_INCLUDES}
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
57 )
387f6b0a5420 CMake: remove vera until we get clang-tidy, #903
David Demelier <markand@malikania.fr>
parents: 182
diff changeset
58 target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS})
200
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
59
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
60 if (EXE_FOLDER)
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
61 set_target_properties(${EXE_TARGET} PROPERTIES FOLDER ${EXE_FOLDER})
0a285d62ace7 windows: initial VS2017 support
David Demelier <markand@malikania.fr>
parents: 183
diff changeset
62 endif ()
49
2804ae55c70f CMake: big cleanup, closes #598
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 endfunction()