57 # Instruct
CMake to run moc automatically when needed.
60 ######################################################################### 64 # * Use a macro to create the CMAKE variables according to the # 65 # provided options as input. # 67 ######################################################################### 72 "NEEDS_CEP_LIBRARIESNEEDS_TOOLNEEDS_COMPONENT_EXTENSIONNEEDS_ACTION_EXTENSIONDEFINESCXX_FLAGSADDITIONAL_SOURCESCEP_NAMEDESCRIPTIONEXTERNAL_LIBRARIESINCLUDE_DIRECTORIESEXTRA_TRANSLATE_LANGUAGE" # possible lists
73 "DISABLEDNEEDS_QT_MODULESNEEDS_ITKNEEDS_QTXMLNEEDS_XSDNEEDS_XERCESCNEEDS_PYTHON" # possible options
79 #########################################################################
81 # CREATE CMAKE VARIABLES #
83 # * Create required and useful
CMake variables
for the macro #
85 #########################################################################
87 # CMAKE CACHE VARIABLE
88 #
if it is the first cmake run, create the application variable with a correct initial value
89 if(NOT APPLICATION_${APPLICATION_NAME_CMAKE}_INTERNAL)
90 # add option to enable/disable
this extension and
set it to
true by
default 91 # Building the extension can be disabled by giving the argument DISABLED to the macro
92 # or by passing the flag -D${TYPE_EXTENSION_CMAKE}_${APPLICATION_NAME_CMAKE}_DISABLED:BOOL=TRUE
93 if(${APPLICATION_NAME_CMAKE}_DISABLED)
94 set(APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED FALSE)
96 set(APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED TRUE)
98 set(APPLICATION_${APPLICATION_NAME_CMAKE} ${APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED} CACHE BOOL
"Build application ${APPLICATION_NAME}")
99 set(APPLICATION_${APPLICATION_NAME_CMAKE}_INTERNAL TRUE CACHE INTERNAL
"Is variable APPLICATION_${APPLICATION_NAME} already created?")
102 # APPLICATION TARGET NAME 104 # NSIS requires that cpack component names do not feature space or "-" characters 105 set(APPLICATION_TARGET_NAME application_${APPLICATION_NAME})
107 set(APPLICATION_TARGET_NAME application-${APPLICATION_NAME})
112 # if this extension is enabled, do everything needed 113 # otherwise... do nothing 114 if (APPLICATION_${APPLICATION_NAME_CMAKE})
116 message(STATUS
"Building application ${APPLICATION_NAME}")
120 ######################################################################### 122 # INCLUDE DIRECTORIES # 124 # * Include basic directories where to look header files # 125 # * Include also additional user provided directories # 126 # * These directories are used for compilation step # 128 ######################################################################### 130 include_directories(${CAMITK_INCLUDE_DIRECTORIES})
131 include_directories(${CMAKE_CURRENT_BINARY_DIR})
132 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
134 # USER INPUT DIRECTORIES
135 include_directories(${${APPLICATION_NAME_CMAKE}_INCLUDE_DIRECTORIES})
139 #########################################################################
141 # GATHER RESSOURCES #
143 # *
get all the headers (.h) and source files (.cpp) of the project #
144 # * create the needed Qt files (using moc and uic) # 145 # * On Windows, Visual Studio, group .moc and .ui files # 146 # in subdirectories # 148 ######################################################################### 150 # get all headers, sources and do what is needed for Qt 151 # one need to do this just before the add_library so that all defines, include directories and link directories 152 # are set properly (gather_headers_and_sources include the call to Qt moc and uic) 157 #########################################################################
159 # TARGET COMPILATION DEFINITION #
161 # * Additional sources files to consider at compilation (.cpp)
# 162 # * CMake project target definition # 164 ######################################################################### 166 set(${APPLICATION_NAME}_SOURCES ${${APPLICATION_NAME}_SOURCES} ${${APPLICATION_NAME_CMAKE}_ADDITIONAL_SOURCES})
168 # APPLE BUNDLE DEFINITIONS
170 set(MACOSX_BUNDLE_INFO_STRING
"${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
171 set(MACOSX_BUNDLE_BUNDLE_VERSION
"${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
172 set(MACOSX_BUNDLE_LONG_VERSION_STRING
"${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
173 set(MACOSX_BUNDLE_SHORT_VERSION_STRING
"${CAMITK_SHORT_VERSION_STRING}")
174 set(MACOSX_BUNDLE_COPYRIGHT
"Univ. Grenoble Alpes")
175 set(MACOSX_BUNDLE_ICON_FILE
"${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.icns")
176 set(MACOSX_BUNDLE_BUNDLE_NAME
"${APPLICATION_TARGET_NAME}")
178 set(MACOSX_BUNDLE_RESOURCES
"${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_TARGET_NAME}.app/Contents/Resources")
179 set(MACOSX_BUNDLE_ICON
"${MACOSX_BUNDLE_ICON_FILE}")
180 execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${MACOSX_BUNDLE_RESOURCES})
181 execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MACOSX_BUNDLE_ICON} ${MACOSX_BUNDLE_RESOURCES})
186 ######################################################################### 188 # ADDITIONAL KNOWN LIBRARY DEPENDENCIES # 190 # * Look for specific library needed # 191 # * Specific libraries are specified as option with the # 192 # NEEDS_LIBRARY syntax (see macro syntax for more options) # 193 # * Backward compatibility : Warn user if using old NEEDS_TOOL syntax # 195 ######################################################################### 198 set(ITK_LIBRARIES
"")
199 if(${APPLICATION_NAME_CMAKE}_NEEDS_ITK)
200 find_package(ITK REQUIRED)
203 set(ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}) #ITK_VERSION is not always
set 204 set(CAMITK_ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR})
205 message(STATUS
"${APPLICATION_TARGET_NAME}: Found ITK version ${ITK_VERSION}")
207 if ((${ITK_VERSION} VERSION_GREATER
"4") AND (${ITK_VERSION} VERSION_LESS
"5")) # ITK 4.9 on Windows, maybe a lesser version
for Linux.
209 set(ITK_DIR ${ITK_DIR}/../..)
210 # Construct list of ITK libraries
for linking = CAMITK_ITK_LIBRARIES
211 foreach(ITK_LIBRARY ${ITK_LIBRARIES})
212 string(SUBSTRING ${ITK_LIBRARY} 0 3 ${ITK_LIBRARY}_PREFIX)
213 # Some libraries have not the expected
'itk' prefix. Add it then
214 if((NOT ${${ITK_LIBRARY}_PREFIX} STREQUAL
"itk") AND (NOT ${${ITK_LIBRARY}_PREFIX} STREQUAL
"ITK"))
215 set(ITK_LIBRARY
itk${ITK_LIBRARY})
217 set(CAMITK_ITK_LIBRARIES ${CAMITK_ITK_LIBRARIES} debug ${ITK_DIR}/${ITK_LIBRARY}-${CAMITK_ITK_VERSION}${CAMITK_DEBUG_POSTFIX}.lib optimized ${ITK_DIR}/${ITK_LIBRARY}-${CAMITK_ITK_VERSION}.lib)
220 set(CAMITK_ITK_LIBRARIES ${ITK_LIBRARIES})
222 message(WARNING
"CamiTKExtension.cmake: ITK LIBRARY NOT SET FOR APPLE")
225 message(FATAL_ERROR "Wrong version of ITK : ${ITK_VERSION}. Required is at least 4.x to 4.9
") 228 message(FATAL_ERROR "ITK not found but required
for ${APPLICATION_TARGET_NAME}
") 233 set(XERCESC_LIBRARIES) 234 if(${APPLICATION_NAME_CMAKE}_NEEDS_XERCESC) 235 # XercesC is required 236 find_package(XercesC REQUIRED) 238 include_directories(${XERCESC_INCLUDE_DIR}) 239 set(XERCESC_LIBRARIES ${XERCESC_LIBRARY}) 241 # most probably win32 or crosscompiling 242 message(FATAL_ERROR "${APPLICATION_NAME}: xerces-c required. Please provide Xerces-C path.
") 247 if(${APPLICATION_NAME_CMAKE}_NEEDS_XSD) 248 # XercesC is required 249 find_package(XercesC REQUIRED) 251 include_directories(${XERCESC_INCLUDE_DIR}) 252 set(XERCESC_LIBRARIES ${XERCESC_LIBRARY}) 253 find_package(XSD REQUIRED) 254 include_directories(${XSD_INCLUDE_DIR}) 256 # most probably win32 or crosscompiling 257 message(FATAL_ERROR "${APPLICATION_NAME}: xerces-c required because of XSD cxx, please
set XERCESC_INCLUDE_DIR
") 262 set(PYTHON_LIBRARIES "") 263 if(${APPLICATION_NAME_CMAKE}_NEEDS_PYTHON) 264 message(STATUS "Python needed by ${APPLICATION_NAME}
") 265 find_package(PythonLibs 2.7 REQUIRED) 267 message(STATUS "Python found (needed by ${APPLICATION_NAME})
") 268 include_directories(${PYTHON_INCLUDE_DIRS}) 269 # PYTHON_LIRARIES is automatically and correctly set by find_package 271 message(FATAL_ERROR "Python (2.7 or above) is required by ${APPLICATION_NAME} : please add your python installation dir to your PATH environment variable
") 276 set(EXTERNAL_LIBRARIES) 277 if(${APPLICATION_NAME_CMAKE}_EXTERNAL_LIBRARIES) 278 foreach(EXTERNAL_LIBRARY ${${APPLICATION_NAME_CMAKE}_EXTERNAL_LIBRARIES}) 279 if (MSVC) # TODO We have to decide how to handle debug version of external libraries 280 set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} 281 debug ${EXTERNAL_LIBRARY}${CAMITK_DEBUG_POSTFIX}.lib 282 optimized ${EXTERNAL_LIBRARY} 285 set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} ${EXTERNAL_LIBRARY}) 290 # BACKWARD COMPATIBILITY 292 # TODO CAMITK_DEPRECATED. This option is marked as deprecated. It is to be removed in CamiTK 4.0 293 # check deprecated (and warn) 294 # TODO CAMITK_DEPRECATED. This option is marked as deprecated. It is to be removed in CamiTK 4.0 295 if(${APPLICATION_NAME_CMAKE}_NEEDS_TOOL) 296 message(WARNING "Warning: ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt:
camitk_application macro option NEEDS_TOOL is deprecated, please use NEEDS_CEP_LIBRARIES instead..
") 297 set(CEP_LIBRARIES ${CEP_LIBRARIES} ${${APPLICATION_NAME_CMAKE}_NEEDS_TOOL}) 302 ######################################################################### 306 # * Link directories are used to indicate the compiler where # 307 # to look for folder containing libraries to link with. # 309 ######################################################################### 310 # CAMITK BASIC LIB DIRECTORIES 311 link_directories(${CAMITK_LINK_DIRECTORIES}) 315 ######################################################################### 317 # TARGET COMPILATION DEFINITION # 319 # * Additional sources files to consider at compilation (.cpp) # 320 # * CMake project target definition # 322 ######################################################################### 323 # CMAKE TARGET DEFINITION 324 add_executable(${APPLICATION_TARGET_NAME} ${${APPLICATION_NAME}_SOURCES}) 328 ######################################################################### 330 # QT LINKING LIBRARIES # 332 # * Set at linking the Qt5 libraries # 334 ######################################################################### 335 qt5_use_modules(${APPLICATION_TARGET_NAME} ${CAMITK_QT_COMPONENTS}) 339 ######################################################################### 341 # CAMITK ACTION / COMPONENT / LIBRARIES DEPENDENCIES # 343 # * Look for action / component / libraries dependencies # 344 # * Specific actions / components / libraries are specified as option # 345 # with the NEEDS_ACTION/COMPONENT_EXTENSION/CEP_LIBRARIES syntax # 346 # * Add dependencies to library-camitkcore and the testing # 347 # action/component if test are runned on it # 349 ######################################################################### 351 # 1st CAMITKCORE LIBRARY DEPENDENCY 352 # add the target dependency (i.e., enable proper parallelization of the build process 353 # only if inside the sdk build 355 add_dependencies(${APPLICATION_TARGET_NAME} ${CAMITK_CORE_TARGET_LIB_NAME}) 356 # add the dependency to the core automoc target 357 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${CAMITK_CORE_TARGET_LIB_NAME}) 360 # 2nd COMPONENTS DEPENDENCIES 361 if(${APPLICATION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION) 362 set(COMPONENTS_DEPENDENCY_LIST "") #use for generating the project.xml file 363 foreach(COMPONENT_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION}) 364 # include directories from build, camitk (local or global install). 365 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/components/${COMPONENT_NEEDED}) 366 include_directories(${CAMITK_INCLUDE_DIR}/components/${COMPONENT_NEEDED}) 369 set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES} 370 debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/components/${COMPONENT_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib 371 optimized ${COMPONENT_NEEDED} 374 set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES} ${COMPONENT_NEEDED}) 376 # CMake / CDash dependencies 378 add_dependencies(${APPLICATION_TARGET_NAME} component_${COMPONENT_NEEDED}) 379 # add the dependency to the component automoc target 380 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS component_${COMPONENT_NEEDED}) 382 add_dependencies(${APPLICATION_TARGET_NAME} component-${COMPONENT_NEEDED}) 383 set(COMPONENTS_DEPENDENCY_LIST ${COMPONENTS_DEPENDENCY_LIST} component-${COMPONENT_NEEDED}) 384 # add the dependency to the component automoc target 385 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS component-${COMPONENT_NEEDED}) 390 # 3rd ACTIONS DEPENDENCIES 391 if(${APPLICATION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION) 392 set(ACTIONS_DEPENDENCY_LIST "") #use for generating the project.xml file 393 foreach(ACTION_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION}) 394 # include directories from build, camitk (local or global install). 395 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/actions/${ACTION_NEEDED}) 396 include_directories(${CAMITK_INCLUDE_DIR}/actions/${ACTION_NEEDED}) 399 set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES} 400 debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/actions/${ACTION_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib 401 optimized ${ACTION_NEEDED} 404 set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES} ${ACTION_NEEDED}) 406 # CMake / CDash dependencies 408 add_dependencies(${APPLICATION_TARGET_NAME} action_${ACTION_NEEDED}) 409 # add the dependency to the action automoc target 410 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS action_${ACTION_NEEDED}) 412 add_dependencies(${APPLICATION_TARGET_NAME} action-${ACTION_NEEDED}) 413 set(ACTIONS_DEPENDENCY_LIST ${ACTIONS_DEPENDENCY_LIST} action-${ACTION_NEEDED}) 414 # add the dependency to the action automoc target 415 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS action-${ACTION_NEEDED}) 420 # 4th CEP LIBRARIES DEPENDENCIES 421 if(${APPLICATION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES) 422 set(CEP_LIBRARIES_DEPENDENCY_LIST "") #use for generating the project.xml file 423 foreach(CEP_LIBRARY_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES}) 424 # include directories from build, camitk (local or global install). 425 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED}) 426 include_directories(${CAMITK_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED}) 429 set(CEP_LIBRARIES ${CEP_LIBRARIES} debug ${CEP_LIBRARY_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib 430 optimized ${CEP_LIBRARY_NEEDED} 434 set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED}) 436 set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED}) 439 # CMake / CDash dependencies 441 add_dependencies(${APPLICATION_TARGET_NAME} library_${CEP_LIBRARY_NEEDED}) 442 # add the dependency to the library automoc target 443 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS library_${CEP_LIBRARY_NEEDED}) 445 add_dependencies(${APPLICATION_TARGET_NAME} library-${CEP_LIBRARY_NEEDED}) 446 set(CEP_LIBRARIES_DEPENDENCY_LIST ${CEP_LIBRARIES_DEPENDENCY_LIST} library-${CEP_LIBRARY_NEEDED}) 447 # add the dependency to the library automoc target 448 set_property(TARGET ${APPLICATION_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS library-${CEP_LIBRARY_NEEDED}) 455 ######################################################################### 459 # * Flags are options to give to the compiler # 460 # * Add user input flags # 461 # * Add platform specific flags # 463 ######################################################################### 465 # USER INPUT COMPILER FLAG 466 if(${APPLICATION_NAME_CMAKE}_DEFINES) 467 foreach (FLAG ${${APPLICATION_NAME_CMAKE}_DEFINES}) 468 add_definitions(-D${FLAG}) 472 # USER INPUT CUSTOM COMPILER FLAG 473 if(${APPLICATION_NAME_CMAKE}_CXX_FLAGS) 474 foreach (FLAG ${${APPLICATION_NAME_CMAKE}_CXX_FLAGS}) 475 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}
") 481 ######################################################################### 485 # * Linking is the last stage of compilation # 486 # * Indicate what libraries to use for linking the target # 488 ######################################################################### 490 target_link_libraries(${APPLICATION_TARGET_NAME} ${CAMITK_CORE_LIBRARIES} ${CAMITK_LIBRARIES} ${COMPONENT_EXTENSION_LIBRARIES} ${ACTION_EXTENSION_LIBRARIES} ${CEP_LIBRARIES} ${XERCESC_LIBRARY} ${CAMITK_ITK_LIBRARIES} ${PYTHON_LIBRARIES} ${EXTERNAL_LIBRARIES}) 494 ######################################################################### 498 # * Define the output directory (location and name) # 499 # * Define the output name of the library # 500 # * Add ${CAMITK_DEBUG_POSTFIX} suffix to Debug MSVC built libraries # 502 ######################################################################### 506 set_target_properties(${APPLICATION_TARGET_NAME} 507 PROPERTIES OUTPUT_NAME camitk-${APPLICATION_NAME} 508 DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX} 511 set_target_properties(${APPLICATION_TARGET_NAME} 512 PROPERTIES OUTPUT_NAME camitk-${APPLICATION_NAME} 516 # OUTPUT DIRECTORY LOCATION 517 # always in bin folder 518 set_target_properties(${APPLICATION_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR} 519 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR} 520 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR} 523 ######################################################################### 527 # * When installing the project, header files (.h) and test data are # 528 # copied into a installation folder to determine. # 529 # * Indicate in this section, where to install your project and which # 530 # files to copy into that folder (during local/global installation) # 532 ######################################################################### 534 # FOLDER INSTALLATION 535 # Indicate where to install the application 536 install(TARGETS ${APPLICATION_TARGET_NAME} 537 RUNTIME DESTINATION bin 538 COMPONENT ${APPLICATION_TARGET_NAME} 543 ######################################################################### 545 # CDASH SUBPROJECT DESCRIPTION # 547 # * Update the XML descriton of the subprojects dependenicies # 550 ######################################################################### 551 # CDASH XML SUBPROJECTS DESCRIPTION UPDATE 552 if(NOT ((APPLICATION_TARGET_NAME STREQUAL "application-testactions
") OR (APPLICATION_TARGET_NAME STREQUAL "application-testcomponents
"))) 553 # We will add manually the CDash dependencies of the testing applications 554 # See CamiTKSubProjectValidate.cmake 555 camitk_sub_project_add(APPLICATION ${APPLICATION_TARGET_NAME} DEPENDENCIES library-camitkcore ${COMPONENTS_DEPENDENCY_LIST} ${ACTIONS_DEPENDENCY_LIST} ${CEP_LIBRARIES_DEPENDENCY_LIST}) 558 ##################################################################################### 562 # * CAMITK_TRANSLATIONS contains the list of language to translate # 565 # * Create the translate.pro file which contains 4 sections: # 566 # - HEADERS: list of .h/.hpp files to look for tr("") QString # 567 # - SOURCES: list of .cpp files to look for tr("") QString # 568 # - FORMS: list of .ui files to look for tr("") QString # 569 # - TRANSLATIONS: list of .ts files which use CAMITK_TRANSLATIONS # 570 # to define each .ts file # 572 # * Execute lupdate program to update the .ts files with new QString # 575 # * Execute lrelease program to create .qm files (binary equivalent of # 578 # * Create translate.qrc which contains the list of .qm files. # 579 # * Create the flags.qrc file which contains the list of .png flags # 582 ##################################################################################### 584 if(${APPLICATION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE) 585 camitk_translate(EXTRA_LANGUAGE ${${APPLICATION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE}) 592 ######################################################################### 594 # PACKAGING CATEGORIZATION # 596 # * On Windows, when building a package (win32 installer), the # 597 # install shield wizard proposes you to select which component # 599 # * Each component to install has a short description following its # 600 # name to understand its role. # 601 # * This section deals with the categorization and the description # 602 # of the component in this installer. # 604 ######################################################################### 606 # WINDOWS INSTALLER CATEGORIZATION 607 if(${APPLICATION_NAME_CMAKE}_CEP_NAME) 608 if (${APPLICATION_NAME_CMAKE}_CEP_NAME MATCHES "SDK
") 609 # The default SDK extensions are categorized as "required
" and are not "unselectable
" by the user at installation time 610 cpack_add_component(${APPLICATION_TARGET_NAME} 611 DISPLAY_NAME ${APPLICATION_TARGET_NAME} 612 DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION} 618 # Extension is selectable for installation in the wizard of the installer 619 cpack_add_component(${APPLICATION_TARGET_NAME} 620 DISPLAY_NAME ${APPLICATION_TARGET_NAME} 621 DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION} 622 GROUP ${${APPLICATION_NAME_CMAKE}_CEP_NAME} 626 # Extension if not categorized for packaging presentation 627 cpack_add_component(${APPLICATION_TARGET_NAME} 628 DISPLAY_NAME ${APPLICATION_TARGET_NAME} 629 DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION} 634 # additional unix system files/resources 636 # Man page installation 637 set(${APPLICATION_NAME_CMAKE}_MAN_PAGE ${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.1) 638 if (EXISTS ${${APPLICATION_NAME_CMAKE}_MAN_PAGE}) 639 message(STATUS "Found man page
for ${APPLICATION_TARGET_NAME}
") 640 install(FILES ${${APPLICATION_NAME_CMAKE}_MAN_PAGE} 641 DESTINATION ${CAMITK_APPLICATION_MAN_INSTALL_DIR} 644 # check if .in exists 645 if (EXISTS ${${APPLICATION_NAME_CMAKE}_MAN_PAGE}.in) 646 message(STATUS "Found man page configuration file
for ${APPLICATION_TARGET_NAME}
") 647 install(CODE "message(STATUS \
"Updating ${APPLICATION_NAME} man page (version ${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR} as of ${CURRENT_DATE})\")")
648 # set variable in sub-cmake shell 649 install(CODE
"set(APPLICATION_NAME ${APPLICATION_NAME})")
650 install(CODE
"set(CURRENT_DATE ${CURRENT_DATE})")
651 install(CODE
"set(CAMITK_VERSION_MAJOR ${CAMITK_VERSION_MAJOR})")
652 install(CODE
"set(CAMITK_VERSION_MINOR ${CAMITK_VERSION_MINOR})")
653 # remove previous version 654 install(CODE
"execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_CURRENT_BINARY_DIR}/camitk-${APPLICATION_NAME}.1)")
655 # configure current version 656 install(CODE
"configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.1.in ${CMAKE_CURRENT_BINARY_DIR}/camitk-${APPLICATION_NAME}.1 @ONLY)")
658 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/
camitk-${APPLICATION_NAME}.1 DESTINATION ${CAMITK_APPLICATION_MAN_INSTALL_DIR})
663 set(${APPLICATION_NAME_CMAKE}_DESKTOP ${CMAKE_CURRENT_SOURCE_DIR}/resources/
camitk-${APPLICATION_NAME}.desktop)
664 if (EXISTS ${${APPLICATION_NAME_CMAKE}_DESKTOP})
665 message(STATUS
"Found desktop file for ${APPLICATION_TARGET_NAME}")
666 install(FILES ${${APPLICATION_NAME_CMAKE}_DESKTOP} DESTINATION ${CAMITK_APPLICATION_DESKTOP_INSTALL_DIR})
670 set(${APPLICATION_NAME_CMAKE}_PIXMAP ${CMAKE_CURRENT_SOURCE_DIR}/resources/
camitk-${APPLICATION_NAME}.xpm)
671 if (EXISTS ${${APPLICATION_NAME_CMAKE}_PIXMAP})
672 message(STATUS
"Found pixmap for ${APPLICATION_TARGET_NAME}")
673 install(FILES ${${APPLICATION_NAME_CMAKE}_PIXMAP} DESTINATION ${CAMITK_APPLICATION_PIXMAP_INSTALL_DIR})
678 endif()
#APPLICATION_${APPLICATION_NAME_CMAKE} A pseudo-namespace used to group CMake macros and functions.
camitk_application()
macro camitk_application simplify writing a CMakeLists.txt for CamiTK application extension ...
Definition: CamiTKApplication.h:55
Definition: itkImageToVTKImageFilter.h:39
get_directory_name()
macro get_directory_name set the variable VariableName to the name of the last directory of FullPathD...
Definition: GetDirectoryName.h:14
Definition: Action.cpp:40
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
gather_headers_and_sources()
macro gather_headers_and_sources find all headers, sources, including the qt ui, moc and resources an...
Definition: GatherHeadersAndSources.h:15
test result execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CAMITK_TEST_COMMAND_FILE} ${CAMITK_TEST_COMMAND_RESULT_FILE} ${CAMITK_TEST_COMMAND_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_COMMAND_FILE} ${CAMITK_TEST_PASS_FILE_OUTPUT_FILE} ${CAMITK_TEST_PASS_FILE_RESULT_FILE}) file(WRITE $
Definition: CamiTKTestPassFile.h:19
static void include(QRect &r, const QRect &rect)
Definition: canvas_typed/qtcanvas.cpp:98