1 # possible values : ACTION_EXTENSION or COMPONENT_EXTENSION. 78 # Instruct
CMake to run moc automatically when needed.
83 ######################################################################### 87 # * Use a macro to create the CMAKE variables according to the # 88 # provided options as input. # 90 ######################################################################### 95 "NEEDS_TOOLNEEDS_CEP_LIBRARIESNEEDS_COMPONENT_EXTENSIONNEEDS_ACTION_EXTENSIONINCLUDE_DIRECTORIESEXTERNAL_LIBRARIESHEADERS_TO_INSTALLDEFINESCXX_FLAGSEXTERNAL_SOURCESTARGET_NAMECEP_NAMEDESCRIPTIONTEST_APPLICATIONEXTRA_TRANSLATE_LANGUAGETEST_FILES" # possible lists
96 "NEEDS_QT_MODULESACTION_EXTENSIONCOMPONENT_EXTENSIONDISABLEDNEEDS_XERCESCNEEDS_ITKNEEDS_LIBXML2NEEDS_XSDNEEDS_QTXMLNEEDS_OPENCVNEEDS_IGSTKINSTALL_ALL_HEADERSNEEDS_GDCMDISABLE_TESTLEVEL1DISABLE_TESTLEVEL2DISABLE_TESTLEVEL3" # possible options
102 #########################################################################
104 # CREATE CMAKE VARIABLES #
106 # * Create required and useful
CMake variables
for the macro #
108 #########################################################################
110 # TYPE EXTENSION : ACTION or COMPONENT
111 if (${EXTENSION_NAME_CMAKE}_ACTION_EXTENSION)
112 set(TYPE_EXTENSION
"action")
113 string(TOUPPER ${TYPE_EXTENSION} TYPE_EXTENSION_CMAKE)
114 elseif(${EXTENSION_NAME_CMAKE}_COMPONENT_EXTENSION)
115 set(TYPE_EXTENSION
"component")
116 string(TOUPPER ${TYPE_EXTENSION} TYPE_EXTENSION_CMAKE)
119 # CMAKE CACHE VARIABLE 120 # if it is the first cmake run, create the extension variable with a correct initial value 121 if(NOT ${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_INTERNAL)
122 # add option to enable/disable
this extension and
set it to
true by
default 123 # Building the extension can be disabled by giving the argument DISABLED to the macro
124 # or by passing the flag -D${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_DISABLED:BOOL=TRUE
125 if(${EXTENSION_NAME_CMAKE}_DISABLED)
126 set(${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_ENABLED FALSE)
128 set(${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_ENABLED TRUE)
130 set(${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE} ${${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_ENABLED} CACHE BOOL
"Build extension ${EXTENSION_NAME}")
131 set(${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}_INTERNAL TRUE CACHE INTERNAL
"Is variable ${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME} already created?")
134 # if this extension is enabled, do everything needed 135 # otherwise... do nothing 136 if (${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE})
139 # The target name is composed of the following: [action / component]-name
140 # * action / component is the type of extension as prefix
141 # * name is deduced from the input folder containing the calling CMakeLists.txt file of the extension.
142 if (${EXTENSION_NAME_CMAKE}_TARGET_NAME)
143 set(${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME ${${EXTENSION_NAME_CMAKE}_TARGET_NAME})
145 set(${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME ${EXTENSION_NAME})
147 # replace "-" by "_" if the extension is being packaged with NSIS, the program to create a Windows installer. 149 # NSIS requires that cpack component names do not feature space or "-" characters 150 set(${TYPE_EXTENSION_CMAKE}_TARGET_NAME ${TYPE_EXTENSION}_${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME})
152 set(${TYPE_EXTENSION_CMAKE}_TARGET_NAME ${TYPE_EXTENSION}-${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME})
155 message(STATUS
"Building extension ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}")
159 ######################################################################### 161 # INCLUDE DIRECTORIES # 163 # * Include basic directories where to look header files # 164 # * Include also additional user provided directories # 165 # * These directories are used for compilation step # 167 ######################################################################### 170 include_directories(${CAMITK_INCLUDE_DIRECTORIES})
171 include_directories(${CMAKE_CURRENT_BINARY_DIR})
172 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
174 # USER INPUT DIRECTORIES
175 include_directories(${${EXTENSION_NAME_CMAKE}_INCLUDE_DIRECTORIES})
179 #########################################################################
181 # GATHER RESSOURCES #
183 # * Get all the headers (.h) and source files (.cpp) of the project #
184 # * Create the needed Qt files (using moc and uic) # 185 # * On Windows, Visual Studio, group .moc and .ui files # 186 # in subdirectories # 188 ######################################################################### 190 # get all headers, sources and do what is needed for Qt 191 # one need to do this just before the add_library so that all defines, include directories and link directories 192 # are set properly (gather_headers_and_sources include the call to Qt moc and uic) 197 #########################################################################
199 # ADDITIONAL KNOWN EXTERNAL LIBRARY DEPENDENCIES #
201 # * Look
for specific library needed #
202 # * Specific libraries are specified as option with the #
203 # NEEDS_LIBRARY syntax (see macro syntax
for more options)
# 204 # * Backward compatibility : Warn user if using old NEEDS_TOOL syntax # 206 ######################################################################### 209 set(ITK_LIBRARIES
"")
210 if(${EXTENSION_NAME_CMAKE}_NEEDS_ITK)
211 find_package(ITK REQUIRED PATHS /usr/lib/InsightToolkit)
214 set(ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}) #ITK_VERSION is not always
set 215 set(CAMITK_ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR})
216 message(STATUS
"${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}: Found ITK version ${ITK_VERSION}")
218 if ((${ITK_VERSION} VERSION_GREATER
"4") AND (${ITK_VERSION} VERSION_LESS
"5")) # ITK 4.9 on Windows, maybe a lesser version
for Linux.
220 set(ITK_DIR ${ITK_DIR}/../..)
221 # Construct list of ITK libraries
for linking = CAMITK_ITK_LIBRARIES
222 foreach(ITK_LIBRARY ${ITK_LIBRARIES})
223 string(SUBSTRING ${ITK_LIBRARY} 0 3 ${ITK_LIBRARY}_PREFIX)
224 # Some libraries have not the expected
'itk' prefix. Add it then
225 if((NOT ${${ITK_LIBRARY}_PREFIX} STREQUAL
"itk") AND (NOT ${${ITK_LIBRARY}_PREFIX} STREQUAL
"ITK"))
226 set(ITK_LIBRARY
itk${ITK_LIBRARY})
228 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)
231 set(CAMITK_ITK_LIBRARIES ${ITK_LIBRARIES})
233 message(WARNING
"CamiTKExtension.cmake: ITK LIBRARY NOT SET FOR APPLE")
236 message(FATAL_ERROR
"Wrong version of ITK : ${ITK_VERSION}. Required is at least 4.x to 4.9")
239 message(FATAL_ERROR
"ITK not found but required for ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}")
244 set(LIBXML2_LIBRARY
"")
245 if(${EXTENSION_NAME_CMAKE}_NEEDS_LIBXML2)
246 # LibXml2 is required
249 add_definitions(${LIBXML2_DEFINITIONS})
250 include_directories(${LIBXML2_INCLUDE_DIR})
251 set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
253 # most probably win32 or crosscompiling 254 message(STATUS
"${EXTENSION_NAME}: libxml2 required")
259 set(OpenCV_LIBRARIES
"")
260 if(${EXTENSION_NAME_CMAKE}_NEEDS_OPENCV)
262 find_package( OpenCV REQUIRED )
264 set(OpenCV_LIBRARIES
"")
268 set(IGSTK_LIBRARIES
"")
269 if(${EXTENSION_NAME_CMAKE}_NEEDS_IGSTK)
270 find_package(IGSTK REQUIRED)
273 set(IGSTK_LIBRARIES
"")
277 set(XERCESC_LIBRARIES)
278 if(${EXTENSION_NAME_CMAKE}_NEEDS_XERCESC)
279 # XercesC is required
280 find_package(XercesC REQUIRED)
282 include_directories(${XERCESC_INCLUDE_DIR})
283 set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
285 # most probably win32 or crosscompiling 286 message(FATAL_ERROR
"${EXTENSION_NAME}: xerces-c required. Please provide Xerces-C path.")
291 if(${EXTENSION_NAME_CMAKE}_NEEDS_XSD)
292 # XercesC is required
293 find_package(XercesC REQUIRED)
295 include_directories(${XERCESC_INCLUDE_DIR})
296 set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
297 find_package(XSD REQUIRED)
298 include_directories(${XSD_INCLUDE_DIR})
300 # most probably win32 or crosscompiling 301 message(FATAL_ERROR
"${EXTENSION_NAME}: xerces-c required because of XSD cxx, please set XERCESC_INCLUDE_DIR")
307 if(${EXTENSION_NAME_CMAKE}_NEEDS_GDCM)
309 # Look for GDCM library only if not found (for instance, ITK has already search for it) 310 # Calling find_package(GDCM ..) more than once creates CMake errors. 311 find_package(GDCM 2.0 REQUIRED)
317 debug ${GDCM_DIR}/../gdcmcharls${CAMITK_DEBUG_POSTFIX}.lib
318 debug ${GDCM_DIR}/../gdcmCommon${CAMITK_DEBUG_POSTFIX}.lib
319 debug ${GDCM_DIR}/../gdcmDICT${CAMITK_DEBUG_POSTFIX}.lib
320 debug ${GDCM_DIR}/../gdcmDSED${CAMITK_DEBUG_POSTFIX}.lib
321 debug ${GDCM_DIR}/../gdcmexpat${CAMITK_DEBUG_POSTFIX}.lib
322 debug ${GDCM_DIR}/../gdcmgetopt${CAMITK_DEBUG_POSTFIX}.lib
323 debug ${GDCM_DIR}/../gdcmIOD${CAMITK_DEBUG_POSTFIX}.lib
324 debug ${GDCM_DIR}/../gdcmjpeg8${CAMITK_DEBUG_POSTFIX}.lib
325 debug ${GDCM_DIR}/../gdcmjpeg12${CAMITK_DEBUG_POSTFIX}.lib
326 debug ${GDCM_DIR}/../gdcmjpeg16${CAMITK_DEBUG_POSTFIX}.lib
327 debug ${GDCM_DIR}/../gdcmMEXD${CAMITK_DEBUG_POSTFIX}.lib
328 debug ${GDCM_DIR}/../gdcmMSFF${CAMITK_DEBUG_POSTFIX}.lib
329 debug ${GDCM_DIR}/../gdcmopenjpeg${CAMITK_DEBUG_POSTFIX}.lib
330 debug ${GDCM_DIR}/../gdcmzlib${CAMITK_DEBUG_POSTFIX}.lib
331 debug ${GDCM_DIR}/../socketxx${CAMITK_DEBUG_POSTFIX}.lib
332 debug ${GDCM_DIR}/../vtkgdcm${CAMITK_DEBUG_POSTFIX}.lib
333 debug ${GDCM_DIR}/../gdcmDSED${CAMITK_DEBUG_POSTFIX}.lib
334 optimized gdcmcharls gdcmCommon gdcmDICT gdcmDSED gdcmexpat
335 optimized gdcmgetopt gdcmIOD gdcmjpeg8 gdcmjpeg12 gdcmjpeg16
336 optimized gdcmMEXD gdcmMSFF gdcmopenjpeg gdcmzlib socketxx vtkgdcm
340 set(GDCM_LIBRARIES gdcmCommon gdcmDICT gdcmDSED gdcmMEXD gdcmMSFF vtkgdcm)
343 message(ERROR
"${EXTENSION_NAME}: GDCM 2.x library required. Please install GDCM.")
348 set(EXTERNAL_LIBRARIES)
349 if(${EXTENSION_NAME_CMAKE}_EXTERNAL_LIBRARIES)
350 foreach(EXTERNAL_LIBRARY ${${EXTENSION_NAME_CMAKE}_EXTERNAL_LIBRARIES})
352 set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES}
353 debug ${EXTERNAL_LIBRARY}${CAMITK_DEBUG_POSTFIX}.lib
354 optimized ${EXTERNAL_LIBRARY}
357 set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} ${EXTERNAL_LIBRARY})
362 # BACKWARD COMPATIBILITY 364 # TODO CAMITK_DEPRECATED. This option is marked as deprecated. It is to be removed in CamiTK 4.0 365 if(${EXTENSION_NAME_CMAKE}_NEEDS_TOOL)
366 message(WARNING
"Warning: ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt: camitk_extension macro option NEEDS_TOOL is deprecated, please use NEEDS_CEP_LIBRARIES instead..")
367 set(${EXTENSION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES ${${EXTENSION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES} ${${EXTENSION_NAME_CMAKE}_NEEDS_TOOL})
372 ######################################################################### 376 # * Link directories are used to indicate the compiler where # 377 # to look for folder containing libraries to link with. # 378 # * Must be done BEFORE creating the CMake target with add_library # 380 ######################################################################### 382 # CAMITK BASIC LIB DIRECTORIES 383 link_directories(${CAMITK_LINK_DIRECTORIES})
387 #########################################################################
389 # TARGET COMPILATION DEFINITION #
391 # * Additional sources files to consider at compilation (.cpp)
# 392 # * CMake project target definition # 394 ######################################################################### 396 set(${EXTENSION_NAME_CMAKE}_SOURCES ${${EXTENSION_NAME_CMAKE}_SOURCES} ${${EXTENSION_NAME_CMAKE}_EXTERNAL_SOURCES})
398 # CMAKE TARGET DEFINITION
399 add_library(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} SHARED ${${EXTENSION_NAME_CMAKE}_SOURCES})
403 #########################################################################
405 # QT LINKING LIBRARIES #
407 # * Set at linking the Qt5 libraries #
409 #########################################################################
410 qt5_use_modules(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} ${CAMITK_QT_COMPONENTS})
414 #########################################################################
416 # CAMITK ACTION / COMPONENT / LIBRARIES DEPENDENCIES #
418 # * Look
for action / component / libraries dependencies #
419 # * Specific actions / components / libraries are specified as option #
420 # with the NEEDS_ACTION/COMPONENT_EXTENSION/CEP_LIBRARIES syntax #
421 # * Add dependencies to library-camitkcore and the testing #
422 # action/component
if test are runned on it #
424 #########################################################################
426 # 1st CAMITKCORE LIBRARY DEPENDENCY
427 # add_dependencies(..) is only needed to enable parallel build during SDK build
428 # but generates an error for external CEP, where this target does not 430 # Using target_link_libraries(..) is enough to link the extension to the CamiTK core library 432 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} ${CAMITK_CORE_TARGET_LIB_NAME})
433 # add the dependency to the core automoc target
434 set_property(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${CAMITK_CORE_TARGET_LIB_NAME})
437 # 2nd COMPONENTS DEPENDENCIES 438 if(${EXTENSION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION)
439 set(COMPONENTS_DEPENDENCY_LIST
"") #use
for generating the project.xml file
440 foreach(COMPONENT_NEEDED ${${EXTENSION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION})
441 #
include directories from build,
camitk (local or global install).
442 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/components/${COMPONENT_NEEDED})
443 include_directories(${CAMITK_INCLUDE_DIR}/components/${COMPONENT_NEEDED})
446 set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES}
447 debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/components/${COMPONENT_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib
448 optimized ${COMPONENT_NEEDED}
451 set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES} ${COMPONENT_NEEDED})
453 # CMake / CDash dependencies 455 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} component_${COMPONENT_NEEDED})
457 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} component-${COMPONENT_NEEDED})
458 set(COMPONENTS_DEPENDENCY_LIST ${COMPONENTS_DEPENDENCY_LIST} component-${COMPONENT_NEEDED})
463 # 3rd ACTIONS DEPENDENCIES 464 if(${EXTENSION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION)
465 set(ACTIONS_DEPENDENCY_LIST
"") #use
for generating the project.xml file
466 foreach(ACTION_NEEDED ${${EXTENSION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION})
467 #
include directories from build,
camitk (local or global install).
468 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/actions/${ACTION_NEEDED})
469 include_directories(${CAMITK_INCLUDE_DIR}/actions/${ACTION_NEEDED})
472 set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES}
473 debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/actions/${ACTION_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib
474 optimized ${ACTION_NEEDED}
477 set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES} ${ACTION_NEEDED})
479 # CMake / CDash dependencies 481 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} action_${ACTION_NEEDED})
483 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} action-${ACTION_NEEDED})
484 set(ACTIONS_DEPENDENCY_LIST ${ACTIONS_DEPENDENCY_LIST} action-${ACTION_NEEDED})
489 # 4th CEP LIBRARIES DEPENDENCIES 490 if(${EXTENSION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES)
491 set(CEP_LIBRARIES_DEPENDENCY_LIST
"") #use
for generating the project.xml file
492 foreach(CEP_LIBRARY_NEEDED ${${EXTENSION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES})
493 #
include directories from build,
camitk (local or global install).
494 include_directories(${CAMITK_BUILD_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
495 include_directories(${CAMITK_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
498 set(CEP_LIBRARIES ${CEP_LIBRARIES} debug ${CEP_LIBRARY_NEEDED}${CAMITK_DEBUG_POSTFIX}.lib
499 optimized ${CEP_LIBRARY_NEEDED}
503 set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
505 set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
508 # CMake / CDash dependencies 510 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} library_${CEP_LIBRARY_NEEDED})
512 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} library-${CEP_LIBRARY_NEEDED})
513 set(CEP_LIBRARIES_DEPENDENCY_LIST ${CEP_LIBRARIES_DEPENDENCY_LIST} library-${CEP_LIBRARY_NEEDED})
514 # add the dependency to the library automoc target
515 set_property(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS library-${CEP_LIBRARY_NEEDED})
520 # 5th DEPENDENCY ON TESTING APPLICATION 521 # Those projects are used to run unitarian test on ACTION / COMPONENT extensions. 522 set(APPLICATIONS_DEPENDENCY_LIST
"")
523 if(${EXTENSION_NAME_CMAKE}_TEST_APPLICATION AND NOT PACKAGING_NSIS AND BUILD_TESTING)
524 # Add
this dependencies
for automatically constructing application-testactions components dependencies
525 add_dependencies(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} application-test${TYPE_EXTENSION}s)
526 set(APPLICATIONS_DEPENDENCY_LIST
"application-test${TYPE_EXTENSION}s")
527 # add the dependency to the test application automoc target 528 set_property(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} APPEND PROPERTY AUTOGEN_TARGET_DEPENDS application-test${TYPE_EXTENSION}s)
531 if((CEP_NAME STREQUAL
"SDK") OR (CEP_NAME STREQUAL
"modeling") OR (CEP_NAME STREQUAL
"imaging"))
532 # 6th TEST-COMPONENT APPLICATION DEPENDENCY ON THIS COMPONENT 533 if(${EXTENSION_NAME_CMAKE}_COMPONENT_EXTENSION AND ${EXTENSION_NAME_CMAKE}_TEST_APPLICATION AND NOT PACKAGING_NSIS AND BUILD_TESTING)
534 add_dependencies(application-testactions ${COMPONENT_TARGET_NAME})
535 # add
this component automoc target to the dependency of the test application
536 set_property(TARGET application-testactions APPEND PROPERTY AUTOGEN_TARGET_DEPENDS ${COMPONENT_TARGET_NAME})
539 # 7th TEST-ACTION APPLICATION DEPENDENCY ON ACTION-APPLICATION 540 if(${TYPE_EXTENSION_CMAKE}_TARGET_NAME STREQUAL
"action-application" AND BUILD_TESTING)
541 add_dependencies(application-testcomponents action-application)
542 # add this component automoc target to the dependency of the test application 543 set_property(TARGET application-testcomponents APPEND PROPERTY AUTOGEN_TARGET_DEPENDS action-application)
548 ######################################################################### 552 # * Flags are options to give to the compiler # 553 # * Add user input flags # 554 # * Add platform specific flags # 556 ######################################################################### 558 # USER INPUT DEFINES COMPILER FLAG 559 if(${EXTENSION_NAME_CMAKE}_DEFINES)
560 foreach (FLAG ${${EXTENSION_NAME_CMAKE}_DEFINES})
561 add_definitions(-D${FLAG})
565 # USER INPUT CUSTOM COMPILER FLAG 566 if(${EXTENSION_NAME_CMAKE}_CXX_FLAGS)
567 foreach (FLAG ${${EXTENSION_NAME_CMAKE}_CXX_FLAGS})
568 set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} ${FLAG}")
572 # PLATFORM SPECIFIC COMPILER FLAG 573 # 64bits and other platform with relocation needs -fPIC 575 check_cxx_accepts_flag(-fPIC FPIC_FLAG_ACCEPTED)
576 # no need to add -fPIC on mingw, otherwise it generates a warning: -fPIC ignored for target (all code is position independent) [enabled by default] 577 # msvc is also accepting the flag, but then produce warning D9002 : ignoring unknown option '-fPIC' cl 578 if(FPIC_FLAG_ACCEPTED AND NOT WIN32)
579 set_property(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} APPEND PROPERTY COMPILE_FLAGS -fPIC)
584 ######################################################################### 588 # * Linking is the last stage of compilation # 589 # * Indicate what libraries to use for linking the target # 591 ######################################################################### 593 # Any component or action has to be linked with ${CAMITK_CORE_LIBRARIES} and with all its dependencies 594 target_link_libraries(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} ${CAMITK_CORE_LIBRARIES} ${CAMITK_LIBRARIES} ${COMPONENT_EXTENSION_LIBRARIES} ${ACTION_EXTENSION_LIBRARIES} ${CEP_LIBRARIES} ${CAMITK_ITK_LIBRARIES} ${LIBXML2_LIBRARY} ${OpenCV_LIBRARIES} ${IGSTK_LIBRARIES} ${XERCESC_LIBRARIES} ${GDCM_LIBRARIES} ${EXTERNAL_LIBRARIES})
598 #########################################################################
602 # * Define the output directory (location and name)
# 603 # * Define the output name of the library # 604 # * Add ${CAMITK_DEBUG_POSTFIX} suffix to Debug MSVC built libraries # 605 # * Additional Linux .so files information # 607 ######################################################################### 609 # OUTPUT LIBRARY NAME 610 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
611 PROPERTIES OUTPUT_NAME ${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}
614 # OUTPUT DIRECTORY LOCATION AND NAME
615 # Output directory (all extensions are
private)
616 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
617 LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
618 LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
620 # Output directory (
for dll plateform,
this is still the same, extensions are
private)
621 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
622 RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
623 RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
625 # Output directory (
for dll plateform,
this is still the same, extensions are
private)
626 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
627 ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
628 ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s
631 # OUTPUT LIBRARY NAME MSVC in DEBUG mode
633 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
636 # ADDITIONAL LINUX .so FILE INFORMATION 637 set(${TYPE_EXTENSION_CMAKE}_LIBRARY_PROPERTIES ${${TYPE_EXTENSION_CMAKE}_LIBRARY_PROPERTIES}
638 VERSION
"${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR}.${CAMITK_VERSION_PATCH}" 639 SOVERSION
"${CAMITK_VERSION_MAJOR}" 641 #
set the library specific info (SONAME...)
642 set_target_properties(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTIES ${${TYPE_EXTENSION_CMAKE}_LIBRARY_PROPERTIES} LINK_INTERFACE_LIBRARIES
"")
645 # target properties (outputname and
remove soname)
646 # set_property(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} PROPERTY NO_SONAME 1) 647 # in CEP the version patch might not have been set 648 if (NOT CAMITK_VERSION_PATCH)
649 set(CAMITK_VERSION_PATCH 0)
654 ######################################################################### 658 # * When installing the project, header files (.h) and test data are # 659 # copied into a installation folder to determine. # 660 # * Indicate in this section, where to install your project and which # 661 # files to copy into that folder (during local/global installation) # 663 ######################################################################### 665 # FOLDER INSTALLATION 666 # Indicate where to install the action/component 667 install(TARGETS ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
668 # TODO always use private lib, even for runtime 669 RUNTIME DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}/${TYPE_EXTENSION}s
670 LIBRARY DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}/${TYPE_EXTENSION}s
671 ARCHIVE DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}/${TYPE_EXTENSION}s
672 COMPONENT ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
675 # HEADERS INSTALLATION
676 # Build target to install provided headers to install (with HEADERS_TO_INSTALL option)
677 if(${EXTENSION_NAME_CMAKE}_HEADERS_TO_INSTALL)
678 export_headers(${${EXTENSION_NAME_CMAKE}_HEADERS_TO_INSTALL} COMPONENT ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} GROUP ${TYPE_EXTENSION}s)
681 # Build target to install all header files(with INSTALL_ALL_HEADERS option) 682 if(${EXTENSION_NAME_CMAKE}_INSTALL_ALL_HEADERS)
683 export_headers(${${EXTENSION_NAME_CMAKE}_HEADERS} COMPONENT ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} GROUP ${TYPE_EXTENSION}s)
686 # TESTDATA INSTALLATION 687 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/testdata)
688 # Check test data dir directory
689 if (NOT EXISTS ${CAMITK_BUILD_TESTDATA_DIR})
690 make_directory( ${CAMITK_BUILD_TESTDATA_DIR} )
693 # copy the files to test data directory 694 execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory testdata ${CAMITK_BUILD_TESTDATA_DIR}
695 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
698 # during installation, copy the files to install directory
699 set (TESTDATA_DEST_DIR share/${CAMITK_SHORT_VERSION_STRING}/testdata)
700 install(DIRECTORY testdata/
701 #DESTINATION share/testdata
702 #DESTINATION share/${CAMITK_SHORT_VERSION_STRING}/testdata
703 DESTINATION ${TESTDATA_DEST_DIR}
704 # COMPONENT ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} 705 PATTERN
".svn" EXCLUDE
710 # CTESTDATA INSTALLATION 711 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/testdata/ctestdata)
712 # Check test data dir directory
713 if (NOT EXISTS ${CAMITK_BUILD_CTESTDATA_DIR})
714 add_custom_command(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
716 COMMAND ${CMAKE_COMMAND} -E make_directory ${CAMITK_BUILD_CTESTDATA_DIR}
717 COMMENT
"Creating build-time share directory for test data ${CAMITK_BUILD_CTESTDATA_DIR}" 722 # At build time, copy the files to test data directory 723 add_custom_command(TARGET ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
725 COMMAND ${CMAKE_COMMAND} -E copy_directory testdata/ctestdata ${CAMITK_BUILD_CTESTDATA_DIR}
726 COMMENT
"Installing build-time test data for ${EXTENSION_NAME}" 727 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
731 # during installation, copy the files to install directory
732 set (CTESTDATA_DEST_DIR share/${CAMITK_SHORT_VERSION_STRING}/testdata/ctestdata)
733 install(DIRECTORY testdata/ctestdata
734 DESTINATION ${CTESTDATA_DEST_DIR}
735 PATTERN
".svn" EXCLUDE
742 ######################################################################### 744 # CDASH SUBPROJECT DESCRIPTION # 746 # * Update the XML description of the subprojects dependencies # 749 ######################################################################### 750 # CDASH XML SUBPROJECTS DESCRIPTION UPDATE 751 camitk_sub_project_add(${TYPE_EXTENSION_CMAKE} ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} DEPENDENCIES library-camitkcore ${COMPONENTS_DEPENDENCY_LIST} ${ACTIONS_DEPENDENCY_LIST} ${CEP_LIBRARIES_DEPENDENCY_LIST} ${APPLICATIONS_DEPENDENCY_LIST})
755 #########################################################################
757 # PACKAGING CATEGORIZATION #
759 # * On Windows, when building a package (win32 installer), the #
760 # install shield wizard proposes you to select which component # 762 # * Each component to install has a short description following its # 763 # name to understand its role. # 764 # * This section deals with the categorization and the description # 765 # of the component in this installer. # 767 ######################################################################### 769 # WINDOWS INSTALLER CATEGORIZATION 770 if(${EXTENSION_NAME_CMAKE}_CEP_NAME)
771 if (${EXTENSION_NAME_CMAKE}_CEP_NAME MATCHES
"SDK")
772 # The
default SDK extensions are categorized as
"required" and are not
"unselectable" by the user at installation time
773 cpack_add_component(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
774 DISPLAY_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
775 DESCRIPTION ${${EXTENSION_NAME_CMAKE}_DESCRIPTION}
781 # Extension is selectable for installation in the wizard of the installer 782 cpack_add_component(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
783 DISPLAY_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
784 DESCRIPTION ${${EXTENSION_NAME_CMAKE}_DESCRIPTION}
785 GROUP ${${EXTENSION_NAME_CMAKE}_CEP_NAME}
789 # Extension if not categorized for packaging presentation 790 cpack_add_component(${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
791 DISPLAY_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
792 DESCRIPTION ${${EXTENSION_NAME_CMAKE}_DESCRIPTION}
797 ##################################################################################### 801 # * CAMITK_TRANSLATIONS contains the list of language to translate # 804 # * Create the translate.pro file which contains 4 sections: # 805 # - HEADERS: list of .h/.hpp files to look for tr("") QString # 806 # - SOURCES: list of .cpp files to look for tr("") QString # 807 # - FORMS: list of .ui files to look for tr("") QString # 808 # - TRANSLATIONS: list of .ts files which use CAMITK_TRANSLATIONS # 809 # to define each .ts file # 811 # * Execute lupdate program to update the .ts files with new QString # 814 # * Execute lrelease program to create .qm files (binary equivalent of # 817 # * Create translate.qrc which contains the list of .qm files. # 818 # * Create the flags.qrc file which contains the list of .png flags # 821 ##################################################################################### 823 if(${EXTENSION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE)
824 if(${EXTENSION_NAME} STREQUAL
"application")
826 EXTRA_LANGUAGE ${${EXTENSION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE})
828 camitk_translate(EXTRA_LANGUAGE ${${EXTENSION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE})
831 if(${EXTENSION_NAME} STREQUAL
"application")
841 ######################################################################### 843 # CTEST - COMPONENT TESTS DESCRIPTION # 845 ######################################################################### 846 if( ${EXTENSION_NAME_CMAKE}_COMPONENT_EXTENSION AND ${EXTENSION_NAME_CMAKE}_TEST_APPLICATION AND NOT PACKAGING_NSIS AND BUILD_TESTING)
850 # Retrieve the current directory name to properly name the test
853 # Retrieve the files in testdata directory - a test will be applied
for each of these files
856 # Different the test level to proceed
861 set( TESTLEVEL ${LEVEL3} )
863 # 1st test should pass because application test runs with no arguments - shows
usage and exit success
865 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
867 camitk_parse_test_add(NAME ${CAMITK_TEST_NAME} LEVEL 0 DESCRIPTION
"Launch application testcomponent with no arguments.")
869 # According options defined in Cmakelist enable or disable some tests
870 set(TEST_DESCRIPTION
"Test opening the component, saving it as a file and compare the saved file with the original one.")
871 if( ${EXTENSION_NAME_CMAKE}_DISABLE_TESTLEVEL1 )
873 set(TEST_DESCRIPTION
"Run camitk-config." )
874 elseif( ${EXTENSION_NAME_CMAKE}_DISABLE_TESTLEVEL2 )
875 set( TESTLEVEL ${LEVEL1} )
876 set(TEST_DESCRIPTION
"Test opening the component.")
877 elseif( ${EXTENSION_NAME_CMAKE}_DISABLE_TESTLEVEL3 )
878 set( TESTLEVEL ${LEVEL2} )
879 set(TEST_DESCRIPTION
"Test opening the component and saving it as a file.")
882 set( LEVELORIGIN ${TESTLEVEL} ) #store the test level value in a
const variable
884 foreach( COMPONENT_TESTDATA_FILE ${TESTFILES} )
885 # Give the file name (full path cut)
888 # Test procedure: Open an extension and a component- save it - Compare saved file to original file(level3)
889 if( ${TESTLEVEL} EQUAL ${LEVEL3} )
891 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}${CAMITK_DEBUG_POSTFIX}.dll -l ${TESTLEVEL}" 892 PASS_FILE_OUTPUT ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE}
893 TEST_SUFFIX
"-LEVEL${TESTLEVEL}-" 894 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
897 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.dylib -l ${TESTLEVEL}" 898 PASS_FILE_OUTPUT ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE}
899 TEST_SUFFIX
"-LEVEL${TESTLEVEL}-" 900 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
903 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.so -l ${TESTLEVEL}" 904 PASS_FILE_OUTPUT ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE}
905 TEST_SUFFIX
"-LEVEL${TESTLEVEL}-" 906 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
910 MATH(EXPR TESTLEVEL
"${TESTLEVEL}-1")
#Decrease the test level to proceed less arduous tests 913 # Test procedure: Open an extension and a component(level1) - save it(level2) 914 while( ${TESTLEVEL} GREATER 0)
916 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}${CAMITK_DEBUG_POSTFIX}.dll -l ${TESTLEVEL}" TEST_SUFFIX [LEVEL${TESTLEVEL}]
917 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
920 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.dylib -l ${TESTLEVEL}" 921 TEST_SUFFIX
"-LEVEL${TESTLEVEL}-" 922 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
925 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${DATA_FILE} -c ${CAMITK_BUILD_PRIVATE_LIB_DIR}/${TYPE_EXTENSION}s/lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.so -l ${TESTLEVEL}" 926 TEST_SUFFIX
"-LEVEL${TESTLEVEL}-" 927 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
931 MATH(EXPR TESTLEVEL
"${TESTLEVEL}-1")
# Decrease the test level to proceed less arduous tests 933 set( TESTLEVEL ${LEVELORIGIN} )
936 ######################################################################### 938 # CTEST - ACTION TESTS DESCRIPTION # 940 ######################################################################### 941 elseif( ${EXTENSION_NAME_CMAKE}_ACTION_EXTENSION AND ${EXTENSION_NAME_CMAKE}_TEST_APPLICATION AND NOT PACKAGING_NSIS)
945 # Retrieve the current directory name to properly name the test
948 # Test should pass because application test runs with no arguments - shows
usage and exit success
949 camitk_add_test( TEST_SUFFIX
"-LEVEL0-" PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME} )
950 camitk_parse_test_add(NAME ${CAMITK_TEST_NAME} LEVEL 0 DESCRIPTION
"Launch application testaction with no arguments.")
952 #
get the names of actions .dlls in lib directory
955 foreach( ACTION_TESTDATA_FILE ${${EXTENSION_NAME_CMAKE}_TEST_FILES} )
956 # Next line is only useful macro debug => comment from now
957 # message( STATUS
"Action extension: " ${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}
" Test file: " ${ACTION_TESTDATA_FILE} )
959 if( NOT ( ${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME} MATCHES
"application" ) )
# We do not apply tests on actions like (close, save, save as) 960 # Test procedure: Open a file - load an action extension - Apply an action on the component wrapping the file 962 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${ACTION_TESTDATA_FILE} -a ${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}${CAMITK_DEBUG_POSTFIX}.dll" 963 TEST_SUFFIX
"-LEVEL1-" 964 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
967 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${ACTION_TESTDATA_FILE} -a lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.dylib" 968 TEST_SUFFIX
"-LEVEL1-" 969 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
972 camitk_add_test( EXECUTABLE_ARGS
"-i ${CAMITK_BUILD_TESTDATA_DIR}/ctestdata/${ACTION_TESTDATA_FILE} -a lib${${TYPE_EXTENSION_CMAKE}_OUTPUT_NAME}.so" 973 TEST_SUFFIX
"-LEVEL1-" 974 PROJECT_NAME ${${TYPE_EXTENSION_CMAKE}_TARGET_NAME}
977 camitk_parse_test_add(NAME ${CAMITK_TEST_NAME} LEVEL 1 DESCRIPTION
"Open a file, load the action and apply it on the component.")
981 endif()
# endif(${TYPE_EXTENSION_CMAKE}_${EXTENSION_NAME_CMAKE}) 985 # Old macro to configure a
new action to the framework
987 # TODO CAMITK_DEPRECATED. This macro is marked as deprecated. It is to be removed in CamiTK 4.0
989 message(WARNING
"Deprecated macro action_extension detected : please use camitk_extension(ACTION_EXTENSION ...) instead.")
993 # Old macro to configure a
new component to the framework
995 # TODO CAMITK_DEPRECATED. This macro is marked as deprecated. It is to be removed in CamiTK 4.0
996 component_extension(){)
997 message(WARNING
"Deprecated macro component_extension detected : please use camitk_extension(COMPONENT_EXTENSION ...) instead.")
1001 # TODO write a viewer_extension macro in CamiTK
A pseudo-namespace used to group CMake macros and functions.
Definition: itkImageToVTKImageFilter.h:39
camitk_add_test()
camitk_add_test is a macro to add a new test to the CTest infrastructure It encapsulates CMake add_te...
Definition: CamiTKAddTest.h:51
get_directory_name()
macro get_directory_name set the variable VariableName to the name of the last directory of FullPathD...
Definition: GetDirectoryName.h:14
camitk_translate()
macro camitk_translate allows to perform the translation of any project (action, component, application and libraries) in several languages.
Definition: CamiTKTranslate.h:16
Definition: Action.cpp:40
export_headers()
export_headers is a macro that install header files at build and install time
Definition: ExportHeaders.h:40
camitk_init_test()
camitk_init_test is a macro to initialize a group of test (for the same command) It is used to initia...
Definition: CamiTKInitTest.h:37
camitk_parse_test_add_separator()
macro camitk_parse_test_add_separator adds an extension (action or component) separator entry...
Definition: CamiTKParseTestAddSeparator.h:16
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
camitk_parse_test_add()
macro camitk_parse_test_add adds an extension (action or component) automatic test level information ...
Definition: CamiTKParseTestAdd.h:18
camitk_extension()
Macro camitk_extension simplifies writing a camitk extension (component, action)
Definition: CamiTKExtension.h:75
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
void usage(char *appName)
Definition: applications/actionstatemachine/main.cpp:39
camitk_sub_project_add()
macro camitk_sub_project_add adds a subproject definition from targets and its dependencies (if any) ...
Definition: CamiTKSubProjectAdd.h:17
static void include(QRect &r, const QRect &rect)
Definition: canvas_typed/qtcanvas.cpp:98
get_subdirectoryfiles()
macro get_subdirectoryfiles get the names of all the files (and not directories) contained in a defin...
Definition: GetSubdirectoryFiles.h:20