Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CamiTKLibrary.h
Go to the documentation of this file.
1 
61 
62  #########################################################################
63  # #
64  # ARGUMENTS PARSING #
65  # #
66  # * Use a macro to create the CMAKE variables according to the #
67  # provided options as input. #
68  # #
69  #########################################################################
70 
71  get_directory_name(${CMAKE_CURRENT_SOURCE_DIR} DEFAULT_LIBRARY_NAME)
72 
73  parse_arguments(${DEFAULT_LIBRARY_NAME_CMAKE}
74  "SOURCESNEEDS_CEP_LIBRARIESEXTERNAL_LIBRARIESINCLUDE_DIRECTORIESLIBNAMEDEFINESLINK_DIRECTORIESHEADERS_TO_INSTALLCEP_NAMEDESCRIPTION" # possible lists
75  "SHAREDSTATICNEEDS_LIBXML2NEEDS_XERCESCNEEDS_XSDNEEDS_QT_MODULESPUBLIC" # possible options
76  ${ARGN}
77  )
78 
79 
80 
81  #########################################################################
82  # #
83  # CREATE CMAKE VARIABLES #
84  # #
85  # * Create required and usefull CMake variables for the macro #
86  # #
87  #########################################################################
88 
89  # TARGET NAME
90  # The target name is composed of the following: librart-name
91  # * library is the suffix
92  # * name is deduced from the input folder containing the calling CMakeLists.txt file of the extension.
93  # "-" is replaced by "_" if configuring for packaging with NSIS, the program to create a Windows installer.
94  if (PACKAGING_NSIS)
95  if ("${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME}" STREQUAL "")
96  set(LIBRARY_TARGET_NAME library_${DEFAULT_LIBRARY_NAME})
97  else()
98  set(LIBRARY_TARGET_NAME library_${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME})
99  endif()
100  else()
101  if ("${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME}" STREQUAL "")
102  set(LIBRARY_TARGET_NAME library-${DEFAULT_LIBRARY_NAME})
103  else()
104  set(LIBRARY_TARGET_NAME library-${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME})
105  endif()
106  endif()
107 
108 
109 
110  #########################################################################
111  # #
112  # INCLUDE DIRECTORIES #
113  # #
114  # * Include library directories where to look for header files #
115  # * Include also additional user provided directories #
116  # * These directories are used for compilation step #
117  # #
118  #########################################################################
119 
120  include_directories ( ${${DEFAULT_LIBRARY_NAME_CMAKE}_INCLUDE_DIRECTORIES} # USER PROVIDED ADDITIONAL DIRECTORIEs
121  ${CMAKE_CURRENT_SOURCE_DIR} # BASIC CAMITK DIRECTORIES
122  ${CMAKE_CURRENT_BINARY_DIR} # LIBRARY DIRECTORIES
123  )
124 
125 
126 
127  #########################################################################
128  # #
129  # ADDITIONAL KNOWN LIBRARY DEPENDENCIES #
130  # #
131  # * Look for specific library needed #
132  # * Specific libraries are specified as option with the #
133  # NEEDS_LIBRARY syntax (see macro syntax for more options) #
134  # * Backward compatibility : Warn user if using old NEEDS_TOOL syntax #
135  # #
136  #########################################################################
137 
138  # LIBXML2
139  set(LIBXML2_LIBRARY "")
140  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_LIBXML2)
141  # LibXml2 is required
142  find_package(Xml2)
143  if (LIBXML2_FOUND)
144  add_definitions(${LIBXML2_DEFINITIONS})
145  include_directories(${LIBXML2_INCLUDE_DIR})
146  set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
147  else()
148  # most probably win32 or crosscompiling
149  message(WARNING "${LIBRARY_TARGET_NAME}: libxml2 required")
150  endif()
151  endif()
152 
153  # XERCES-C
154  set(XERCESC_LIBRARIES)
155  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_XERCESC)
156  # XercesC is required
157  find_package(XercesC REQUIRED)
158  if (XERCESC_FOUND)
159  include_directories(${XERCESC_INCLUDE_DIR})
160  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
161  else()
162  # most probably win32 or crosscompiling
163  message(FATAL_ERROR "${DEFAULT_LIBRARY_NAME}: xerces-c required. Please provide Xerces-C path.")
164  endif()
165  endif()
166 
167  # XSD
168  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_XSD)
169  # XercesC is required
170  find_package(XercesC REQUIRED)
171  if (XERCESC_FOUND)
172  include_directories(${XERCESC_INCLUDE_DIR})
173  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
174  find_package(XSD REQUIRED)
175  include_directories(${XSD_INCLUDE_DIR})
176  else()
177  # most probably win32 or crosscompiling
178  message(FATAL_ERROR "${LIBRARY_TARGET_NAME}: xerces-c required because of XSD cxx, please set XERCESC_INCLUDE_DIR")
179  endif()
180  endif()
181 
182  # ADDITIONAL QT MODULES
183  set(QT_MODULES_LIBRARIES)
184  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_QT_MODULES)
185  find_package(Qt4 "4.7" COMPONENTS QtCore QtGui QtXml QtXmlPatterns QtWebkit QtOpenGL QtScript QtSQL QtNetwork REQUIRED)
186  if(NOT QT4_FOUND)
187  message(SEND_ERROR "${DEFAULT_LIBRARY_NAME} : Failed to find Qt 4.7 or greater. This is needed by CamiTK.")
188  endif()
189 
190  # CMake will add the Qt modules specific include directories
191  include(${QT_USE_FILE})
192 
193  # Qt additional modules are required for linking
194  set(QT_MODULES_LIBRARIES ${QT_LIBRARIES})
195  endif()
196 
197  # CEP LIBRARIES
198  set(CEP_LIBRARIES)
199  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES)
200  foreach(CEP_LIBRARY_NEEDED ${${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES})
201  string(TOUPPER ${CEP_LIBRARY_NEEDED} ${CEP_LIBRARY_NEEDED}_INTERNAL)
202  set(LIBRARY_${${CEP_LIBRARY_NEEDED}_INTERNAL} ON CACHE BOOL "Required by action extension ${EXTENSION_NAME}" FORCE )
203  if (MSVC)
204  set(CEP_LIBRARIES ${CEP_LIBRARIES} debug ${CEP_LIBRARY_NEEDED}${CAMITK_DEBUG_POSTFIX}
205  optimized ${CEP_LIBRARY_NEEDED}
206  )
207  else()
208  if(PACKAGING_NSIS)
209  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
210  else()
211  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
212  endif()
213  endif()
214  include_directories(${CAMITK_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
215  include_directories(${CAMITK_USER_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
216  include_directories(${CAMITK_BUILD_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
217  include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../libraries/${CEP_LIBRARY_NEEDED})
218  endforeach()
219  endif()
220 
221  # EXTERNAL DEPENDENCIES
222  set(LINKER_EXTERNAL_LIBRARIES)
223  if(${DEFAULT_LIBRARY_NAME_CMAKE}_EXTERNAL_LIBRARIES)
224  foreach(EXTERNAL_LIBRARY ${${DEFAULT_LIBRARY_NAME_CMAKE}_EXTERNAL_LIBRARIES})
225  if (MSVC)
226  set(LINKER_EXTERNAL_LIBRARIES ${LINKER_EXTERNAL_LIBRARIES}
227  debug ${EXTERNAL_LIBRARY}${CAMITK_DEBUG_POSTFIX}
228  optimized ${EXTERNAL_LIBRARY}
229  )
230  message(STATUS "LINKER_EXTERNAL_LIBRARIES = ${LINKER_EXTERNAL_LIBRARIES}")
231  else()
232  set(LINKER_EXTERNAL_LIBRARIES ${LINKER_EXTERNAL_LIBRARIES} ${EXTERNAL_LIBRARY})
233  endif()
234  endforeach()
235  endif()
236 
237 
238 
239  #########################################################################
240  # #
241  # LINK DIRECTORIES #
242  # #
243  # * Link directories are used to indicate the compiler where #
244  # to look for folder containing libraries to link with. #
245  # * Additional link directories provided by the user #
246  # #
247  #########################################################################
248  # CAMITK BASIC LIB DIRECTORIES
249  link_directories(${CAMITK_LINK_DIRECTORIES})
250 
251  # ADDITIONAL LINK DIRECTORIES
252  if (NOT "${${DEFAULT_LIBRARY_NAME_CMAKE}_LINK_DIRECTORIES}" STREQUAL "")
253  link_directories(${${DEFAULT_LIBRARY_NAME_CMAKE}_LINK_DIRECTORIES})
254  endif()
255 
256 
257 
258  #########################################################################
259  # #
260  # TARGET COMPILATION DEFINITION #
261  # #
262  # * Additional sources files to consider at compilation (.cpp) #
263  # * CMake project target definition depending on library type #
264  # public / private #
265  # #
266  #########################################################################
267  # CMAKE TARGET DEFINITION DEPENDENDING ON THE LIBRARY TYPE (SHARED or STATIC)
268  if (${DEFAULT_LIBRARY_NAME_CMAKE}_SHARED) # shared library
269  message(STATUS "Adding shared library: ${LIBRARY_TARGET_NAME}")
270  add_library(${LIBRARY_TARGET_NAME} SHARED ${${DEFAULT_LIBRARY_NAME_CMAKE}_SOURCES})
271  # prepare the library specific info (SONAME...)
272  set(${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES ${${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES}
273  VERSION "${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR}.${CAMITK_VERSION_PATCH}"
274  SOVERSION "${CAMITK_VERSION_MAJOR}"
275  )
276  # set the library specific info (SONAME...)
277  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ${${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES} LINK_INTERFACE_LIBRARIES "")
278  elseif (${DEFAULT_LIBRARY_NAME_CMAKE}_STATIC) # static library
279  message(STATUS "Adding static library: ${LIBRARY_TARGET_NAME}")
280  add_library(${LIBRARY_TARGET_NAME} STATIC ${${DEFAULT_LIBRARY_NAME_CMAKE}_SOURCES})
281  else()
282  message(FATAL_ERROR "In adding static library ${LIBRARY_TARGET_NAME}.\n Please specify the library type: SHARED or STATIC")
283  endif()
284 
285 
286 
287  #########################################################################
288  # #
289  # LINKING #
290  # #
291  # * Linking is the last stage of compilation #
292  # * Indicate what libraries to use for linking the target #
293  # #
294  #########################################################################
295  # LINKING LIBRARIES
296  target_link_libraries(${LIBRARY_TARGET_NAME} ${CEP_LIBRARIES} ${LINKER_EXTERNAL_LIBRARIES} ${LIBXML2_LIBRARY} ${QT_MODULES_LIBRARIES} ${XERCESC_LIBRARIES})
297 
298 
299 
300  #########################################################################
301  # #
302  # OUTPUT #
303  # #
304  # * Define the output directory (location and name) #
305  # * Define the output name of the library #
306  # * Add ${CAMITK_DEBUG_POSTFIX} suffix to Debug MSVC built libraries #
307  # #
308  #########################################################################
309 
310  # OUTPUT DIRECTORY LOCATION and NAME depending on the type of the library (PUBLIC or PRIVATE)
311  # DEBGUG POSTFIX FOR MSVC
312  if (${DEFAULT_LIBRARY_NAME_CMAKE}_PUBLIC) # Public library => build in the bin folder
313  if (MSVC)
314  # With Visual Studio, public libraries are built in build\bin directory, else it's in build\lib
315  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
316  LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
317  LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
318  )
319  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
320  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
321  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
322  )
323  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
324  ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
325  ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
326  )
327  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
328  else()
329  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR})
330  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR})
331  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR})
332  endif()
333  else() # Private library => build in lib folder
334  if (MSVC)
335  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
336  LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
337  LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
338  )
339  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
340  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
341  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
342  )
343  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
344  ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
345  ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
346  )
347  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
348  else()
349  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR})
350  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR})
351  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR})
352  endif()
353  endif()
354 
355  # OUTUPUT LIBRARY NAME (without the prefix "library-").
356  string(REGEX REPLACE "^library_|^library-" "" LIBRARY_NAME ${LIBRARY_TARGET_NAME})
357  set_target_properties(${LIBRARY_TARGET_NAME}
358  PROPERTIES OUTPUT_NAME ${LIBRARY_NAME}
359  )
360 
361 
362 
363  #########################################################################
364  # #
365  # COMPILATION FLAG #
366  # #
367  # * Flags are options to give to the compiler #
368  # * Add user input flags #
369  # * Add platform specific flags #
370  # #
371  #########################################################################
372 
373  # USER INPUT COMPILER FLAG
374  if(${DEFAULT_LIBRARY_NAME_CMAKE}_DEFINES)
375  foreach (FLAG ${${DEFAULT_LIBRARY_NAME_CMAKE}_DEFINES})
376  add_definitions(-D${FLAG})
377  endforeach()
378  endif()
379 
380  # PLATFORM SPECIFIC COMPILER FLAG
381  # 64bits and other platform with relocation needs -fPIC
382  include(TestCXXAcceptsFlag)
383  check_cxx_accepts_flag(-fPIC FPIC_FLAG_ACCEPTED)
384  # no need to add -fPIC on mingw, otherwise it generates a warning: -fPIC ignored for target (all code is position independent) [enabled by default]
385  # msvc is also accepting the flag, but then produce warning D9002 : ignoring unknown option '-fPIC' cl
386  if(FPIC_FLAG_ACCEPTED AND NOT WIN32)
387  set_property(TARGET ${LIBRARY_TARGET_NAME} APPEND PROPERTY COMPILE_FLAGS -fPIC)
388  endif()
389 
390 
391 
392  #########################################################################
393  # #
394  # INSTALLATION #
395  # #
396  # * When installing the project, header files (.h) and test data are #
397  # copied into an installation folder to determine. #
398  # * Indicate in this section, where to install your project and which #
399  # files to copy into that folder (during local/global installation) #
400  # #
401  #########################################################################
402 
403  # FOLDER INSTALLATION
404  # Indicate where to install the library, dependending on its property (public / private)
405  if (${DEFAULT_LIBRARY_NAME_CMAKE}_PUBLIC) # public library
406  if(WIN32)
407  # public library -> install in bin folder
408  install(TARGETS ${LIBRARY_TARGET_NAME}
409  RUNTIME DESTINATION bin
410  LIBRARY DESTINATION lib
411  ARCHIVE DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
412  COMPONENT ${LIBRARY_NAME_INSTALL}
413  )
414  else()
415  # other public libraries -> install in lib folder
416  install(TARGETS ${LIBRARY_TARGET_NAME}
417  RUNTIME DESTINATION lib
418  LIBRARY DESTINATION lib
419  ARCHIVE DESTINATION lib
420  COMPONENT ${LIBRARY_NAME_INSTALL}
421  )
422  endif()
423  else()
424  # private library -> install in lib/camitk-version folder
425  install(TARGETS ${LIBRARY_TARGET_NAME}
426  RUNTIME DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
427  LIBRARY DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
428  ARCHIVE DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
429  COMPONENT ${LIBRARY_NAME_INSTALL}
430  )
431  endif()
432 
433  # HEADER FILES (.h) INSTALLATION
434  # generate an install target for headers in include/{camitk-version}/libraries
435  if(${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS_TO_INSTALL)
436  export_headers(${${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS_TO_INSTALL} COMPONENT ${LIBRARY_TARGET_NAME} GROUP libraries)
437  endif()
438 
439 
440 
441  #########################################################################
442  # #
443  # PROJECT DEPENDENCIES #
444  # #
445  # * Add in this section library dependencies to other camitk projects #
446  # to keep a correct build order. #
447  # #
448  #########################################################################
449 
450  # CEP LIBRARIES DEPENDENCIES
451  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES)
452  foreach(CEP_LIBRARY_NEEDED ${${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES})
453  if(PACKAGING_NSIS)
454  add_dependencies(${LIBRARY_TARGET_NAME} library_${CEP_LIBRARY_NEEDED})
455  else()
456  add_dependencies(${LIBRARY_TARGET_NAME} library-${CEP_LIBRARY_NEEDED})
457  endif()
458  endforeach()
459  endif()
460 
461 
462 
463  #########################################################################
464  # #
465  # CDASH SUBPROJECT DESCRIPTION #
466  # #
467  # * Update the XML descriton of the subprojects dependencies #
468  # for CDash. #
469  # #
470  #########################################################################
471  # CDASH XML SUBPROJECTS DESCRIPTION UPDATE
472  camitk_sub_project_add(CEP_LIBRARY ${LIBRARY_TARGET_NAME})
473 
474 
475 
476  #########################################################################
477  # #
478  # PACKAGING CATEGORIZATION #
479  # #
480  # * On Windows, when building a package (win32 installer), the #
481  # install shield wizard proposes you to select which component #
482  # to install. #
483  # * Each component to install has a short description following its #
484  # name to understand its role. #
485  # * This section deals with the categorization and the description #
486  # of the component in this installer. #
487  # #
488  #########################################################################
489 
490  # WINDOWS INSTALLER CATEGORIZATION
491  if(${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME) # This input variable describes the category
492  if (${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME MATCHES "SDK")
493  # The default SDK extensions are categorized as "required" and are not "unselectable" by the user at installation time
494  cpack_add_component(${LIBRARY_TARGET_NAME}
495  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
496  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
497  REQUIRED
498  GROUP SDK
499  )
500 
501  else()
502  # Extension is selectable for installation in the wizard of the installer
503  cpack_add_component(${LIBRARY_TARGET_NAME}
504  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
505  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
506  GROUP ${${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME}
507  )
508  endif()
509  else()
510  # Extension if not categorized for packaging presentation
511  cpack_add_component(${LIBRARY_TARGET_NAME}
512  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
513  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
514  )
515 
516  endif()
517 
518 end(){)
519 
520 # Old macro to configure a tool
521 # Use camitk_library macro instead
522 # TODO CAMITK_DEPRECATED. This macro is marked as deprecated. It is to be removed in CamiTK 4.0
523 camitk_tool(){)
524  message(WARNING "Warning: ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt: camitk_tool macro is deprecated, please usecamitk_library(...) instead (use the same parameters).")
525 # string(REPLACE "NEEDS_TOOL" "NEEDS_CEP_LIBRARIES" OBSOLETE_ARGN ${ARGN})
526 # message(STATUS "**************************************** ${ARGN} ===>>> ${OBSOLETE_ARGN} ")
527  camitk_library(${OBSOLETE_ARGN})
528 end(){)
A pseudo-namespace used to group CMake macros and functions.
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_library()
macro camitk_library simplifies the declaration of a library inside CamiTK and is to be used for all ...
Definition: CamiTKLibrary.h:60
export_headers()
export_headers is a macro that install header files at build and install time
Definition: ExportHeaders.h: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
set(CAMITK_TEST_COMMAND_FILE ${CAMITK_TEST_OUTPUT_DIR}/command) set(CAMITK_TEST_COMMAND_RESULT_FILE $
This CMake file run a command and put the output in a given file.
Definition: CamiTKTestPassFile.h:11
camitk_sub_project_add()
macro camitk_sub_project_add adds a subproject definition from targets and its dependencies (if any) ...
Definition: CamiTKSubProjectAdd.h:17