Mercurial > irccd
annotate cmake/function/IrccdDefineExecutable.cmake @ 467:8a75eb260a75
CMake: bump version to 2.2.0
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 23 Aug 2017 07:44:44 +0200 |
parents | c6fbb6e0e06d |
children | daf3aa8b2ddb |
rev | line source |
---|---|
0 | 1 # |
2 # IrccdDefineExecutable.cmake -- CMake build system for irccd | |
3 # | |
394 | 4 # Copyright (c) 2013-2017 David Demelier <markand@malikania.fr> |
0 | 5 # |
6 # Permission to use, copy, modify, and/or distribute this software for any | |
7 # purpose with or without fee is hereby granted, provided that the above | |
8 # copyright notice and this permission notice appear in all copies. | |
9 # | |
10 # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 # | |
18 | |
19 # | |
20 # irccd_define_executable | |
21 # ------------------------------------------------------------------- | |
22 # | |
23 # irccd_define_executable( | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
24 # TARGET target name |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
25 # DESCRIPTION short description (Required if installed) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
26 # SOURCES src1, src2, srcn |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
27 # FLAGS (Optional) C/C++ flags (without -D) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
28 # LIBRARIES (Optional) libraries to link |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
29 # INCLUDES (Optional) includes for the target |
0 | 30 # ) |
31 # | |
32 # Create an executable that can be installed or not. | |
33 # | |
34 | |
35 function(irccd_define_executable) | |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
36 set(options "") |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
37 set(oneValueArgs DESCRIPTION TARGET) |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
38 set(multiValueArgs SOURCES FLAGS LIBRARIES INCLUDES) |
0 | 39 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
40 cmake_parse_arguments(EXE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
0 | 41 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
42 if (NOT EXE_TARGET) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
43 message(FATAL_ERROR "Please set TARGET") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
44 endif () |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
45 if (NOT EXE_SOURCES) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
46 message(FATAL_ERROR "Please set SOURCES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
47 endif () |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
48 if (NOT EXE_DESCRIPTION) |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
49 message(FATAL_ERROR "DESCRIPTION required") |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
50 endif () |
0 | 51 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
52 add_executable(${EXE_TARGET} ${EXE_SOURCES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
53 target_include_directories(${EXE_TARGET} PRIVATE ${EXE_INCLUDES}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
54 target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS}) |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
55 target_link_libraries(${EXE_TARGET} ${EXE_LIBRARIES}) |
0 | 56 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
137
diff
changeset
|
57 # use fakeroot for public executables. |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
58 set_target_properties( |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
59 ${EXE_TARGET} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
60 PROPERTIES |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
61 RUNTIME_OUTPUT_DIRECTORY ${IRCCD_FAKEROOTDIR}/${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
62 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${IRCCD_FAKEROOTDIR}/${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
63 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${IRCCD_FAKEROOTDIR}/${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
64 RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${IRCCD_FAKEROOTDIR}/${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
65 RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${IRCCD_FAKEROOTDIR}/${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
66 ) |
137
bc291b131f6a
Irccd: make compile on VS2015, #425
David Demelier <markand@malikania.fr>
parents:
101
diff
changeset
|
67 |
256
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
68 install( |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
69 TARGETS ${EXE_TARGET} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
70 COMPONENT ${EXE_TARGET} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
71 RUNTIME DESTINATION ${WITH_BINDIR} |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
72 ) |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
73 |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
74 # Put the application into a cpack group. |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
75 string(TOUPPER ${EXE_TARGET} CMP) |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
76 setg(CPACK_COMPONENT_${CMP}_DISPLAY_NAME "${EXE_TARGET} executable") |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
77 setg(CPACK_COMPONENT_${CMP}_DESCRIPTION ${EXE_DESCRIPTION}) |
f04acabfbbe5
CMake: switch to NSIS with various fixes, closes #533
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
78 setg(CPACK_COMPONENT_${CMP}_GROUP "Applications") |
72
98ac3c79009f
Irccd: start making a library, #429
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
79 endfunction() |