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()