Mercurial > irccd
comparison cmake/function/IrccdDefineExecutable.cmake @ 773:8c44bbcbbab9
Misc: style, cleanup and update
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 26 Oct 2018 13:01:00 +0200 |
parents | a17de53db29b |
children | e4662edab00a |
comparison
equal
deleted
inserted
replaced
772:f5ccf65ae929 | 773:8c44bbcbbab9 |
---|---|
19 # | 19 # |
20 # irccd_define_executable | 20 # irccd_define_executable |
21 # ----------------------- | 21 # ----------------------- |
22 # | 22 # |
23 # irccd_define_executable( | 23 # irccd_define_executable( |
24 # TARGET target name | 24 # TARGET target name |
25 # EXPORT (Optional) export executable through CMake | 25 # EXPORT (Optional) export executable through CMake |
26 # DESCRIPTION short description (Required if installed) | 26 # DESCRIPTION short description (Required if installed) |
27 # SOURCES src1, src2, srcn | 27 # SOURCES src1, src2, srcn |
28 # FLAGS (Optional) C/C++ flags (without -D) | 28 # FLAGS (Optional) C/C++ flags (without -D) |
29 # LIBRARIES (Optional) libraries to link | 29 # LIBRARIES (Optional) libraries to link |
30 # INCLUDES (Optional) includes for the target | 30 # INCLUDES (Optional) includes for the target |
31 # ) | 31 # ) |
32 # | 32 # |
33 # Create an executable that can be installed or not. | 33 # Create an executable that can be installed or not. |
34 # | 34 # |
35 | 35 |
36 include(${CMAKE_CURRENT_LIST_DIR}/IrccdVeraCheck.cmake) | 36 include(${CMAKE_CURRENT_LIST_DIR}/IrccdVeraCheck.cmake) |
37 | 37 |
38 function(irccd_define_executable) | 38 function(irccd_define_executable) |
39 set(options EXPORT) | 39 set(options EXPORT) |
40 set(oneValueArgs DESCRIPTION TARGET) | 40 set(oneValueArgs DESCRIPTION TARGET) |
41 set(multiValueArgs SOURCES FLAGS LIBRARIES INCLUDES OPTIONS) | 41 set(multiValueArgs SOURCES FLAGS LIBRARIES INCLUDES OPTIONS) |
42 | 42 |
43 cmake_parse_arguments(EXE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) | 43 cmake_parse_arguments(EXE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
44 | 44 |
45 if (NOT EXE_TARGET) | 45 if (NOT EXE_TARGET) |
46 message(FATAL_ERROR "Please set TARGET") | 46 message(FATAL_ERROR "Please set TARGET") |
47 endif () | 47 endif () |
48 if (NOT EXE_SOURCES) | 48 if (NOT EXE_SOURCES) |
49 message(FATAL_ERROR "Please set SOURCES") | 49 message(FATAL_ERROR "Please set SOURCES") |
50 endif () | 50 endif () |
51 if (NOT EXE_DESCRIPTION) | 51 if (NOT EXE_DESCRIPTION) |
52 message(FATAL_ERROR "DESCRIPTION required") | 52 message(FATAL_ERROR "DESCRIPTION required") |
53 endif () | 53 endif () |
54 | 54 |
55 add_executable(${EXE_TARGET} ${EXE_SOURCES}) | 55 add_executable(${EXE_TARGET} ${EXE_SOURCES}) |
56 target_include_directories(${EXE_TARGET} PRIVATE ${EXE_INCLUDES}) | 56 target_include_directories(${EXE_TARGET} PRIVATE ${EXE_INCLUDES}) |
57 target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS}) | 57 target_compile_definitions(${EXE_TARGET} PRIVATE ${EXE_FLAGS}) |
58 target_compile_options(${EXE_TARGET} PRIVATE ${EXE_OPTIONS}) | 58 target_compile_options(${EXE_TARGET} PRIVATE ${EXE_OPTIONS}) |
59 target_link_libraries(${EXE_TARGET} ${EXE_LIBRARIES}) | 59 target_link_libraries(${EXE_TARGET} ${EXE_LIBRARIES}) |
60 | 60 |
61 set_target_properties( | 61 set_target_properties( |
62 ${EXE_TARGET} | 62 ${EXE_TARGET} |
63 PROPERTIES | 63 PROPERTIES |
64 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin | 64 RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin |
65 ) | 65 ) |
66 foreach (c ${CMAKE_CONFIGURATION_TYPES}) | 66 foreach (c ${CMAKE_CONFIGURATION_TYPES}) |
67 string(TOUPPER ${c} cu) | 67 string(TOUPPER ${c} cu) |
68 set_target_properties( | 68 set_target_properties( |
69 ${EXE_TARGET} | 69 ${EXE_TARGET} |
70 PROPERTIES | 70 PROPERTIES |
71 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} | 71 RUNTIME_OUTPUT_DIRECTORY_${cu} ${CMAKE_BINARY_DIR}/bin/${c} |
72 ) | 72 ) |
73 endforeach() | 73 endforeach() |
74 | 74 |
75 if (EXE_EXPORT) | 75 if (EXE_EXPORT) |
76 install( | 76 install( |
77 TARGETS ${EXE_TARGET} | 77 TARGETS ${EXE_TARGET} |
78 EXPORT irccd-targets | 78 EXPORT irccd-targets |
79 COMPONENT ${EXE_TARGET} | 79 COMPONENT ${EXE_TARGET} |
80 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | 80 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} |
81 ) | 81 ) |
82 endif () | 82 endif () |
83 | 83 |
84 # Put the application into a cpack group. | 84 # Put the application into a cpack group. |
85 string(TOUPPER ${EXE_TARGET} CMP) | 85 string(TOUPPER ${EXE_TARGET} CMP) |
86 setg(CPACK_COMPONENT_${CMP}_DISPLAY_NAME "${EXE_TARGET} executable") | 86 setg(CPACK_COMPONENT_${CMP}_DISPLAY_NAME "${EXE_TARGET} executable") |
87 setg(CPACK_COMPONENT_${CMP}_DESCRIPTION ${EXE_DESCRIPTION}) | 87 setg(CPACK_COMPONENT_${CMP}_DESCRIPTION ${EXE_DESCRIPTION}) |
88 setg(CPACK_COMPONENT_${CMP}_GROUP "Applications") | 88 setg(CPACK_COMPONENT_${CMP}_GROUP "Applications") |
89 | 89 |
90 irccd_vera_check(${EXE_TARGET} "${EXE_SOURCES}") | 90 irccd_vera_check(${EXE_TARGET} "${EXE_SOURCES}") |
91 endfunction() | 91 endfunction() |