Mercurial > malikania
annotate cmake/function/MalikaniaDefineExecutable.cmake @ 215:268b66d72ec0 default tip @
misc: remove Javascript bindings, closes #2402
author | David Demelier <markand@malikania.fr> |
---|---|
date | Thu, 10 Oct 2019 13:52:57 +0200 |
parents | c973501abe36 |
children |
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() |