Computer Assited Medical Intervention Tool Kit  version 3.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CamiTKLibrary.h
Go to the documentation of this file.
1 
63 
64  #########################################################################
65  # #
66  # ARGUMENTS PARSING #
67  # #
68  # * Use a macro to create the CMAKE variables according to the #
69  # provided options as input. #
70  # #
71  #########################################################################
72 
73  get_directory_name(${CMAKE_CURRENT_SOURCE_DIR} DEFAULT_LIBRARY_NAME)
74 
75  parse_arguments(${DEFAULT_LIBRARY_NAME_CMAKE}
76  "SOURCESNEEDS_CEP_LIBRARIESEXTERNAL_LIBRARIESINCLUDE_DIRECTORIESLIBNAMEDEFINESLINK_DIRECTORIESHEADERS_TO_INSTALLCEP_NAMEDESCRIPTIONEXTRA_TRANSLATE_LANGUAGE" # possible lists
77  "SHAREDSTATICNEEDS_ITKNEEDS_LIBXML2NEEDS_XERCESCNEEDS_XSDNEEDS_QT_MODULESPUBLIC" # possible options
78  ${ARGN}
79  )
80 
81 
82 
83  #########################################################################
84  # #
85  # CREATE CMAKE VARIABLES #
86  # #
87  # * Create required and useful CMake variables for the macro #
88  # #
89  #########################################################################
90 
91  # TARGET NAME
92  # The target name is composed of the following: library-name
93  # * library is the suffix
94  # * name is deduced from the input folder containing the calling CMakeLists.txt file of the extension.
95  # "-" is replaced by "_" if configuring for packaging with NSIS, the program to create a Windows installer.
96  if (PACKAGING_NSIS)
97  if ("${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME}" STREQUAL "")
98  set(LIBRARY_TARGET_NAME library_${DEFAULT_LIBRARY_NAME})
99  else()
100  set(LIBRARY_TARGET_NAME library_${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME})
101  endif()
102  else()
103  if ("${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME}" STREQUAL "")
104  set(LIBRARY_TARGET_NAME library-${DEFAULT_LIBRARY_NAME})
105  else()
106  set(LIBRARY_TARGET_NAME library-${${DEFAULT_LIBRARY_NAME_CMAKE}_LIBNAME})
107  endif()
108  endif()
109 
110 
111 
112  #########################################################################
113  # #
114  # INCLUDE DIRECTORIES #
115  # #
116  # * Include library directories where to look for header files #
117  # * Include also additional user provided directories #
118  # * These directories are used for compilation step #
119  # #
120  #########################################################################
121 
122  # BASIC DIRECTORIES
123  include_directories(${CAMITK_INCLUDE_DIRECTORIES})
124  include_directories(${CMAKE_CURRENT_SOURCE_DIR})
125  include_directories(${CMAKE_CURRENT_BINARY_DIR})
126 
127  # USER PROVIDED ADDITIONAL DIRECTORIEs
128  include_directories(${${DEFAULT_LIBRARY_NAME_CMAKE}_INCLUDE_DIRECTORIES})
129 
130 
131 
132  #########################################################################
133  # #
134  # ADDITIONAL KNOWN LIBRARY DEPENDENCIES #
135  # #
136  # * Look for specific library needed #
137  # * Specific libraries are specified as option with the #
138  # NEEDS_LIBRARY syntax (see macro syntax for more options) #
139  # * Backward compatibility : Warn user if using old NEEDS_TOOL syntax #
140  # #
141  #########################################################################
142 
143  # Looking for ITK
144  set(ITK_LIBRARIES "")
145  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_ITK)
146  find_package(ITK REQUIRED)
147  if(ITK_FOUND)
148  include(${ITK_USE_FILE})
149  set(ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}) #ITK_VERSION is not always set
150  message(STATUS "${${DEFAULT_LIBRARY_NAME_CMAKE}_TARGET_NAME}: Found ITK version ${ITK_VERSION}")
151 
152  # Now select the ITK libraries according to the ITK version found.
153  # ITK 3.x.x (mostly 3.20.1)
154  if ((${ITK_VERSION} VERSION_GREATER "3") AND (${ITK_VERSION} VERSION_LESS "4"))
155  if (MSVC) # Visual Studio compilers
156  if(MSVC90 OR MSVC10) #ITK 3.x only works with VS 2008 / 2010
157  set(ITK_LIBRARIES
158  debug ITKAlgorithms${CAMITK_DEBUG_POSTFIX}
159  optimized ITKAlgorithms
160  debug ITKBasicFilters${CAMITK_DEBUG_POSTFIX}
161  optimized ITKBasicFilters
162  debug ITKCommon${CAMITK_DEBUG_POSTFIX}
163  optimized ITKCommon
164  debug ITKIO${CAMITK_DEBUG_POSTFIX}
165  optimized ITKIO
166  debug ITKNrrdIO${CAMITK_DEBUG_POSTFIX}.lib
167  debug itkgdcm${CAMITK_DEBUG_POSTFIX}.lib
168  debug itkjpeg12${CAMITK_DEBUG_POSTFIX}.lib
169  debug itkjpeg16${CAMITK_DEBUG_POSTFIX}.lib
170  debug itkopenjpeg${CAMITK_DEBUG_POSTFIX}.lib
171  debug itkpng${CAMITK_DEBUG_POSTFIX}.lib
172  debug itktiff${CAMITK_DEBUG_POSTFIX}.lib
173  debug itkjpeg8${CAMITK_DEBUG_POSTFIX}.lib
174  debug ITKSpatialObject${CAMITK_DEBUG_POSTFIX}.lib
175  debug itkvnl_inst${CAMITK_DEBUG_POSTFIX}.lib
176  debug itkvnl_algo${CAMITK_DEBUG_POSTFIX}.lib
177  debug itkv3p_netlib${CAMITK_DEBUG_POSTFIX}.lib
178  debug itkvnl${CAMITK_DEBUG_POSTFIX}.lib
179  debug itkvcl${CAMITK_DEBUG_POSTFIX}.lib
180  debug itkv3p_lsqr${CAMITK_DEBUG_POSTFIX}.lib
181  debug ITKMetaIO${CAMITK_DEBUG_POSTFIX}.lib
182  debug itksys${CAMITK_DEBUG_POSTFIX}.lib
183  debug ITKDICOMParser${CAMITK_DEBUG_POSTFIX}.lib
184  debug ITKEXPAT${CAMITK_DEBUG_POSTFIX}.lib
185  debug ITKniftiio${CAMITK_DEBUG_POSTFIX}.lib
186  debug ITKznz${CAMITK_DEBUG_POSTFIX}.lib
187  debug itkzlib${CAMITK_DEBUG_POSTFIX}.lib
188  debug snmpapi.lib
189  debug rpcrt4.lib
190  debug ws2_32.lib
191  debug comctl32.lib
192  debug wsock32.lib
193  debug opengl32.lib
194  )
195  elseif(MSVC11 OR MSVC12) # Visual Studion 2012/2013
196  message(FATAL_ERROR "It seems you have ITK version 3.x installed. This one is not compatible with Visual Studio 2012 or 2013. Please install ITK 4.3.x or 4.5.x instead")
197  endif()
198  elseif(MINGW)
199  message(FATAL_ERROR "CamiTK does not support ITK 3.x libraries for MinGW. You may file a feature request: https://bugzilla-timc.imag.fr/")
200  else() #APPLE OR UNIX
201  set(ITK_LIBRARIES ITKBasicFilters ITKCommon ITKIO ITKAlgorithms)
202  endif()
203 
204  # ITK 4.3.x (mostly 4.3.2)
205  elseif((${ITK_VERSION} VERSION_GREATER "4") AND (${ITK_VERSION} VERSION_LESS "4.4"))
206  if (MSVC) # Visual Studio compilers
207  if(MSVC90 OR MSVC10) #ITK 3.x only works with VS 2008 / 2010
208  message(FATAL_ERROR "ITK version ${ITK_VERSION} is not compatible with Visual Studio 2008 or 2010. Please install ITK version 4.3.x or 4.5.x")
209  elseif(MSVC11 OR MSVC12) # Visual Studion 2012/2013
210  link_directories(${ITK_DIR}/../..)
211  set(ITK_LIBRARIES
212  # Debug libraries
213  debug ITKCommon-4.3${CAMITK_DEBUG_POSTFIX}.lib
214  debug ITKNrrdIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
215  debug itkgdcmCommon-4.3${CAMITK_DEBUG_POSTFIX}.lib
216  debug itkjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
217  debug itkopenjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
218  debug itkpng-4.3${CAMITK_DEBUG_POSTFIX}.lib
219  debug itktiff-4.3${CAMITK_DEBUG_POSTFIX}.lib
220  debug ITKSpatialObjects-4.3${CAMITK_DEBUG_POSTFIX}.lib
221  debug itkvnl_algo-4.3${CAMITK_DEBUG_POSTFIX}.lib
222  debug itkv3p_netlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
223  debug itkvnl-4.3${CAMITK_DEBUG_POSTFIX}.lib
224  debug itkvcl-4.3${CAMITK_DEBUG_POSTFIX}.lib
225  debug itkv3p_lsqr-4.3${CAMITK_DEBUG_POSTFIX}.lib
226  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
227  debug itksys-4.3${CAMITK_DEBUG_POSTFIX}.lib
228  debug ITKDICOMParser-4.3${CAMITK_DEBUG_POSTFIX}.lib
229  debug ITKEXPAT-4.3${CAMITK_DEBUG_POSTFIX}.lib
230  debug ITKniftiio-4.3${CAMITK_DEBUG_POSTFIX}.lib
231  debug ITKznz-4.3${CAMITK_DEBUG_POSTFIX}.lib
232  debug itkzlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
233  debug snmpapi.lib
234  debug rpcrt4.lib
235  debug ws2_32.lib
236  debug comctl32.lib
237  debug wsock32.lib
238  debug opengl32.lib
239  debug ITKIOGIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
240  debug ITKIONIFTI-4.3${CAMITK_DEBUG_POSTFIX}.lib
241  debug ITKIONRRD-4.3${CAMITK_DEBUG_POSTFIX}.lib
242  debug ITKIOPNG-4.3${CAMITK_DEBUG_POSTFIX}.lib
243  debug itkgdcmDICT-4.3${CAMITK_DEBUG_POSTFIX}.lib
244  debug itkgdcmDSED-4.3${CAMITK_DEBUG_POSTFIX}.lib
245  debug itkgdcmIOD-4.3${CAMITK_DEBUG_POSTFIX}.lib
246  debug itkgdcmjpeg8-4.3${CAMITK_DEBUG_POSTFIX}.lib
247  debug itkgdcmjpeg12-4.3${CAMITK_DEBUG_POSTFIX}.lib
248  debug itkgdcmjpeg16-4.3${CAMITK_DEBUG_POSTFIX}.lib
249  debug itkgdcmMSFF-4.3${CAMITK_DEBUG_POSTFIX}.lib
250  debug ITKgiftiio-4.3${CAMITK_DEBUG_POSTFIX}.lib
251  debug itkhdf5_cpp-4.3${CAMITK_DEBUG_POSTFIX}.lib
252  debug itkhdf5-4.3${CAMITK_DEBUG_POSTFIX}.lib
253  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
254  debug ITKIOBioRad-4.3${CAMITK_DEBUG_POSTFIX}.lib
255  debug ITKIOStimulate-4.3${CAMITK_DEBUG_POSTFIX}.lib
256  debug ITKIOTIFF-4.3${CAMITK_DEBUG_POSTFIX}.lib
257  debug ITKIOVTK-4.3${CAMITK_DEBUG_POSTFIX}.lib
258  debug ITKIOPNG-4.3${CAMITK_DEBUG_POSTFIX}.lib
259  debug ITKBiasCorrection-4.3${CAMITK_DEBUG_POSTFIX}.lib
260  debug ITKBioCell-4.3${CAMITK_DEBUG_POSTFIX}.lib
261  debug ITKFEM-4.3${CAMITK_DEBUG_POSTFIX}.lib
262  debug ITKIOBMP-4.3${CAMITK_DEBUG_POSTFIX}.lib
263  debug ITKIOCSV-4.3${CAMITK_DEBUG_POSTFIX}.lib
264  debug ITKIOGDCM-4.3${CAMITK_DEBUG_POSTFIX}.lib
265  debug ITKIOGE-4.3${CAMITK_DEBUG_POSTFIX}.lib
266  debug ITKIOGIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
267  debug ITKIOHDF5-4.3${CAMITK_DEBUG_POSTFIX}.lib
268  debug ITKIOImageBase-4.3${CAMITK_DEBUG_POSTFIX}.lib
269  debug ITKIOIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
270  debug ITKIOJPEG-4.3${CAMITK_DEBUG_POSTFIX}.lib
271  debug ITKIOLSM-4.3${CAMITK_DEBUG_POSTFIX}.lib
272  debug ITKIOMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
273  debug ITKIOMeta-4.3${CAMITK_DEBUG_POSTFIX}.lib
274  debug ITKIOSiemens-4.3${CAMITK_DEBUG_POSTFIX}.lib
275  debug ITKIOSpatialObjects-4.3${CAMITK_DEBUG_POSTFIX}.lib
276  debug ITKIOTransformBase-4.3${CAMITK_DEBUG_POSTFIX}.lib
277  debug ITKIOTransformHDF5-4.3${CAMITK_DEBUG_POSTFIX}.lib
278  debug ITKIOTransformInsightLegacy-4.3${CAMITK_DEBUG_POSTFIX}.lib
279  debug ITKIOTransformMatlab-4.3${CAMITK_DEBUG_POSTFIX}.lib
280  debug ITKIOXML-4.3${CAMITK_DEBUG_POSTFIX}.lib
281  debug ITKKLMRegionGrowing-4.3${CAMITK_DEBUG_POSTFIX}.lib
282  debug ITKLabelMap-4.3${CAMITK_DEBUG_POSTFIX}.lib
283  debug ITKMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
284  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
285  debug itkNetlibSlatec-4.3${CAMITK_DEBUG_POSTFIX}.lib
286  debug itkopenjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
287  debug ITKOptimizers-4.3${CAMITK_DEBUG_POSTFIX}.lib
288  debug ITKOptimizersv4-4.3${CAMITK_DEBUG_POSTFIX}.lib
289  debug ITKPath-4.3${CAMITK_DEBUG_POSTFIX}.lib
290  debug itkpng-4.3${CAMITK_DEBUG_POSTFIX}.lib
291  debug ITKPolynomials-4.3${CAMITK_DEBUG_POSTFIX}.lib
292  debug ITKQuadEdgeMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
293  debug ITKReview-4.3${CAMITK_DEBUG_POSTFIX}.lib
294  debug ITKStatistics-4.3${CAMITK_DEBUG_POSTFIX}.lib
295  debug itkv3p_lsqr-4.3${CAMITK_DEBUG_POSTFIX}.lib
296  debug itkv3p_netlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
297  debug itkvcl-4.3${CAMITK_DEBUG_POSTFIX}.lib
298  debug ITKVideoCore-4.3${CAMITK_DEBUG_POSTFIX}.lib
299  debug ITKVideoIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
300  debug ITKVTK-4.3${CAMITK_DEBUG_POSTFIX}.lib
301  debug ITKVNLInstantiation-4.3${CAMITK_DEBUG_POSTFIX}.lib
302  debug ITKWatersheds-4.3${CAMITK_DEBUG_POSTFIX}.lib
303  # Release librariesdebug
304  optimized ITKCommon-4.3.lib
305  optimized ITKNrrdIO-4.3.lib
306  optimized itkgdcmCommon-4.3.lib
307  optimized itkjpeg-4.3.lib
308  optimized itkopenjpeg-4.3.lib
309  optimized itkpng-4.3.lib
310  optimized itktiff-4.3.lib
311  optimized ITKSpatialObjects-4.3.lib
312  optimized itkvnl_algo-4.3.lib
313  optimized itkv3p_netlib-4.3.lib
314  optimized itkvnl-4.3.lib
315  optimized itkvcl-4.3.lib
316  optimized itkv3p_lsqr-4.3.lib
317  optimized ITKMetaIO-4.3.lib
318  optimized itksys-4.3.lib
319  optimized ITKDICOMParser-4.3.lib
320  optimized ITKEXPAT-4.3.lib
321  optimized ITKniftiio-4.3.lib
322  optimized ITKznz-4.3.lib
323  optimized itkzlib-4.3.lib
324  optimized snmpapi.lib
325  optimized rpcrt4.lib
326  optimized ws2_32.lib
327  optimized comctl32.lib
328  optimized wsock32.lib
329  optimized opengl32.lib
330  optimized ITKIOGIPL-4.3.lib
331  optimized ITKIONIFTI-4.3.lib
332  optimized ITKIONRRD-4.3.lib
333  optimized ITKIOPNG-4.3.lib
334  optimized itkgdcmDICT-4.3.lib
335  optimized itkgdcmDSED-4.3.lib
336  optimized itkgdcmIOD-4.3.lib
337  optimized itkgdcmjpeg8-4.3.lib
338  optimized itkgdcmjpeg12-4.3.lib
339  optimized itkgdcmjpeg16-4.3.lib
340  optimized itkgdcmMSFF-4.3.lib
341  optimized ITKgiftiio-4.3.lib
342  optimized itkhdf5_cpp-4.3.lib
343  optimized itkhdf5-4.3.lib
344  optimized ITKMetaIO-4.3.lib
345  optimized ITKIOBioRad-4.3.lib
346  optimized ITKIOStimulate-4.3.lib
347  optimized ITKIOTIFF-4.3.lib
348  optimized ITKIOVTK-4.3.lib
349  optimized ITKIOPNG-4.3.lib
350  optimized ITKBiasCorrection-4.3.lib
351  optimized ITKBioCell-4.3.lib
352  optimized ITKFEM-4.3.lib
353  optimized ITKIOBMP-4.3.lib
354  optimized ITKIOCSV-4.3.lib
355  optimized ITKIOGDCM-4.3.lib
356  optimized ITKIOGE-4.3.lib
357  optimized ITKIOGIPL-4.3.lib
358  optimized ITKIOHDF5-4.3.lib
359  optimized ITKIOImageBase-4.3.lib
360  optimized ITKIOIPL-4.3.lib
361  optimized ITKIOJPEG-4.3.lib
362  optimized ITKIOLSM-4.3.lib
363  optimized ITKIOMesh-4.3.lib
364  optimized ITKIOMeta-4.3.lib
365  optimized ITKIOSiemens-4.3.lib
366  optimized ITKIOSpatialObjects-4.3.lib
367  optimized ITKIOTransformBase-4.3.lib
368  optimized ITKIOTransformHDF5-4.3.lib
369  optimized ITKIOTransformInsightLegacy-4.3.lib
370  optimized ITKIOTransformMatlab-4.3.lib
371  optimized ITKIOXML-4.3.lib
372  optimized ITKKLMRegionGrowing-4.3.lib
373  optimized ITKLabelMap-4.3.lib
374  optimized ITKMesh-4.3.lib
375  optimized ITKMetaIO-4.3.lib
376  optimized itkNetlibSlatec-4.3.lib
377  optimized itkopenjpeg-4.3.lib
378  optimized ITKOptimizers-4.3.lib
379  optimized ITKOptimizersv4-4.3.lib
380  optimized ITKPath-4.3.lib
381  optimized itkpng-4.3.lib
382  optimized ITKPolynomials-4.3.lib
383  optimized ITKQuadEdgeMesh-4.3.lib
384  optimized ITKReview-4.3.lib
385  optimized ITKStatistics-4.3.lib
386  optimized itkv3p_lsqr-4.3.lib
387  optimized itkv3p_netlib-4.3.lib
388  optimized itkvcl-4.3.lib
389  optimized ITKVideoCore-4.3.lib
390  optimized ITKVideoIO-4.3.lib
391  optimized ITKVTK-4.3.lib
392  optimized ITKVNLInstantiation-4.3.lib
393  optimized ITKWatersheds-4.3.lib
394  )
395  endif()
396  elseif(MINGW OR APPLE)
397  link_directories(${ITK_DIR}/../..)
398  set(ITK_LIBRARIES
399  ITKCommon-4.3
400  ITKNrrdIO-4.3
401  itkgdcmCommon-4.3
402  itkjpeg-4.3
403  itkopenjpeg-4.3
404  itkpng-4.3
405  itktiff-4.3
406  ITKSpatialObjects-4.3
407  itkvnl_algo-4.3
408  itkv3p_netlib-4.3
409  itkvnl-4.3
410  itkvcl-4.3
411  itkv3p_lsqr-4.3
412  ITKMetaIO-4.3
413  itksys-4.3
414  ITKDICOMParser-4.3
415  ITKEXPAT-4.3
416  ITKniftiio-4.3
417  ITKznz-4.3
418  itkzlib-4.3
419  snmpapi
420  rpcrt4
421  ws2_32
422  comctl32
423  wsock32
424  opengl32
425  ITKIOGIPL-4.3
426  ITKIONIFTI-4.3
427  ITKIONRRD-4.3
428  ITKIOPNG-4.3
429  itkgdcmDICT-4.3
430  itkgdcmDSED-4.3
431  itkgdcmIOD-4.3
432  itkgdcmjpeg8-4.3
433  itkgdcmjpeg12-4.3
434  itkgdcmjpeg16-4.3
435  itkgdcmMSFF-4.3
436  ITKgiftiio-4.3
437  itkhdf5_cpp-4.3
438  itkhdf5-4.3
439  ITKMetaIO-4.3
440  ITKIOBioRad-4.3
441  ITKIOStimulate-4.3
442  ITKIOTIFF-4.3
443  ITKIOVTK-4.3
444  ITKIOPNG-4.3
445  ITKBiasCorrection-4.3
446  ITKBioCell-4.3
447  ITKFEM-4.3
448  ITKIOBMP-4.3
449  ITKIOCSV-4.3
450  ITKIOGDCM-4.3
451  ITKIOGE-4.3
452  ITKIOGIPL-4.3
453  ITKIOHDF5-4.3
454  ITKIOImageBase-4.3
455  ITKIOIPL-4.3
456  ITKIOJPEG-4.3
457  ITKIOLSM-4.3
458  ITKIOMesh-4.3
459  ITKIOMeta-4.3
460  ITKIOSiemens-4.3
461  ITKIOSpatialObjects-4.3
462  ITKIOTransformBase-4.3
463  ITKIOTransformHDF5-4.3
464  ITKIOTransformInsightLegacy-4.3
465  ITKIOTransformMatlab-4.3
466  ITKIOXML-4.3
467  ITKKLMRegionGrowing-4.3
468  ITKLabelMap-4.3
469  ITKMesh-4.3
470  ITKMetaIO-4.3
471  itkNetlibSlatec-4.3
472  itkopenjpeg-4.3
473  ITKOptimizers-4.3
474  ITKOptimizersv4-4.3
475  ITKPath-4.3
476  itkpng-4.3
477  ITKPolynomials-4.3
478  ITKQuadEdgeMesh-4.3
479  ITKReview-4.3
480  ITKStatistics-4.3
481  itkv3p_lsqr-4.3
482  itkv3p_netlib-4.3
483  itkvcl-4.3
484  ITKVideoCore-4.3
485  ITKVideoIO-4.3
486  ITKVTK-4.3
487  ITKVNLInstantiation-4.3
488  ITKWatersheds-4.3
489  )
490  else() #Linux
491  set(ITK_LIBRARIES ITKCommon-4.3)
492  endif()
493 
494  # ITK 4.5.x (mostly 4.5.1)
495  elseif((${ITK_VERSION} VERSION_GREATER "4.4") AND (${ITK_VERSION} VERSION_LESS "4.7"))
496  if(MSVC)
497  message(FATAL_ERROR "ITK version 4.5.x is not supported yet on Visual Studio compiler. You may file a feature request: https://bugzilla-timc.imag.fr/")
498  elseif(MINGW)
499  message(FATAL_ERROR "ITK version 4.5.x is not supported yet for MinGW compiler. You may file a feature request: https://bugzilla-timc.imag.fr/")
500  elseif(APPLE)
501  set(ITK_LIBRARIES
502  ITKBiasCorrection
503  ITKBioCell
504  ITKCommon
505  ITKDICOMParser
506  ITKEXPAT
507  ITKFEM
508  ITKGPUAnisotropicSmoothing
509  ITKGPUCommon
510  ITKGPUFiniteDifference
511  ITKGPUImageFilterBase
512  ITKGPUPDEDeformable
513  ITKGPUSmoothing
514  ITKGPUThresholding
515  ITKIOBMP
516  ITKIOBioRad
517  ITKIOCSV
518  ITKIOGDCM
519  ITKIOGE
520  ITKIOGIPL
521  ITKIOHDF5
522  ITKIOIPL
523  ITKIOImageBase
524  ITKIOJPEG
525  ITKIOLSM
526  ITKIOMesh
527  ITKIOMeta
528  ITKIONIFTI
529  ITKIONRRD
530  ITKIOPNG
531  ITKIOSiemens
532  ITKIOSpatialObjects
533  ITKIOStimulate
534  ITKIOTIFF
535  ITKIOTransformBase
536  ITKIOTransformHDF5
537  ITKIOTransformInsightLegacy
538  ITKIOTransformMatlab
539  ITKIOVTK
540  ITKIOXML
541  ITKKLMRegionGrowing
542  ITKLabelMap
543  ITKMesh
544  ITKMetaIO
545  ITKNrrdIO
546  ITKOptimizers
547  ITKOptimizersv4
548  ITKPath
549  ITKPolynomials
550  ITKQuadEdgeMesh
551  ITKReview
552  ITKSpatialObjects
553  ITKStatistics
554  ITKVNLInstantiation
555  ITKVTK
556  ITKVideoCore
557  ITKVideoIO
558  ITKWatersheds
559  ITKgiftiio
560  ITKniftiio
561  ITKznz
562  itkNetlibSlatec
563  itkdouble-conversion
564  itkhdf5
565  itkhdf5_cpp
566  itkjpeg
567  itkopenjpeg
568  itkpng
569  itksys
570  itktiff
571  itkv3p_lsqr
572  itkv3p_netlib
573  itkvcl
574  itkvnl
575  itkvnl_algo
576  itkzlib
577  )
578  else() #Linux
579  message(FATAL_ERROR "ITK version 4.5.x is not supported yet for Linux platform. You may file a feature request: https://bugzilla-timc.imag.fr/")
580  endif()
581 
582  # ITK version > 4.6 (mostly ITK 5.x)
583  else()
584  message(FATAL_ERROR "CamiTK does not support yet ITK version 5.x. You may file a feature request: https://bugzilla-timc.imag.fr/")
585  endif()
586  endif()
587  endif() #NEEDS ITK
588 
589  # LIBXML2
590  set(LIBXML2_LIBRARY "")
591  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_LIBXML2)
592  # LibXml2 is required
593  find_package(Xml2)
594  if (LIBXML2_FOUND)
595  add_definitions(${LIBXML2_DEFINITIONS})
596  include_directories(${LIBXML2_INCLUDE_DIR})
597  set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
598  else()
599  # most probably win32 or crosscompiling
600  message(WARNING "${LIBRARY_TARGET_NAME}: libxml2 required")
601  endif()
602  endif()
603 
604  # XERCES-C
605  set(XERCESC_LIBRARIES)
606  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_XERCESC)
607  # XercesC is required
608  find_package(XercesC REQUIRED)
609  if (XERCESC_FOUND)
610  include_directories(${XERCESC_INCLUDE_DIR})
611  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
612  else()
613  # most probably win32 or crosscompiling
614  message(FATAL_ERROR "${DEFAULT_LIBRARY_NAME}: xerces-c required. Please provide Xerces-C path.")
615  endif()
616  endif()
617 
618  # XSD
619  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_XSD)
620  # XercesC is required
621  find_package(XercesC REQUIRED)
622  if (XERCESC_FOUND)
623  include_directories(${XERCESC_INCLUDE_DIR})
624  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
625  find_package(XSD REQUIRED)
626  include_directories(${XSD_INCLUDE_DIR})
627  else()
628  # most probably win32 or crosscompiling
629  message(FATAL_ERROR "${LIBRARY_TARGET_NAME}: xerces-c required because of XSD cxx, please set XERCESC_INCLUDE_DIR")
630  endif()
631  endif()
632 
633  # ADDITIONAL QT MODULES
634  set(QT_MODULES_LIBRARIES)
635  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_QT_MODULES)
636  find_package(Qt4 "4.7" COMPONENTS QtCore QtGui QtXml QtXmlPatterns QtWebkit QtOpenGL QtScript QtSQL QtNetwork REQUIRED)
637  if(NOT QT4_FOUND)
638  message(SEND_ERROR "${DEFAULT_LIBRARY_NAME} : Failed to find Qt 4.7 or greater. This is needed by CamiTK.")
639  endif()
640 
641  # CMake will add the Qt modules specific include directories
642  include(${QT_USE_FILE})
643 
644  # Qt additional modules are required for linking
645  set(QT_MODULES_LIBRARIES ${QT_LIBRARIES})
646  endif()
647 
648  # EXTERNAL DEPENDENCIES
649  set(LINKER_EXTERNAL_LIBRARIES)
650  if(${DEFAULT_LIBRARY_NAME_CMAKE}_EXTERNAL_LIBRARIES)
651  foreach(EXTERNAL_LIBRARY ${${DEFAULT_LIBRARY_NAME_CMAKE}_EXTERNAL_LIBRARIES})
652  if (MSVC)
653  set(LINKER_EXTERNAL_LIBRARIES ${LINKER_EXTERNAL_LIBRARIES}
654  debug ${EXTERNAL_LIBRARY}${CAMITK_DEBUG_POSTFIX}
655  optimized ${EXTERNAL_LIBRARY}
656  )
657  message(STATUS "LINKER_EXTERNAL_LIBRARIES = ${LINKER_EXTERNAL_LIBRARIES}")
658  else()
659  set(LINKER_EXTERNAL_LIBRARIES ${LINKER_EXTERNAL_LIBRARIES} ${EXTERNAL_LIBRARY})
660  endif()
661  endforeach()
662  endif()
663 
664 
665 
666  #########################################################################
667  # #
668  # LINK DIRECTORIES #
669  # #
670  # * Link directories are used to indicate the compiler where #
671  # to look for folder containing libraries to link with. #
672  # * Additional link directories provided by the user #
673  # #
674  #########################################################################
675  # CAMITK BASIC LIB DIRECTORIES
676  link_directories(${CAMITK_LINK_DIRECTORIES})
677 
678  # ADDITIONAL LINK DIRECTORIES
679  if (NOT "${${DEFAULT_LIBRARY_NAME_CMAKE}_LINK_DIRECTORIES}" STREQUAL "")
680  link_directories(${${DEFAULT_LIBRARY_NAME_CMAKE}_LINK_DIRECTORIES})
681  endif()
682 
683 
684 
685  #########################################################################
686  # #
687  # TARGET COMPILATION DEFINITION #
688  # #
689  # * Additional sources files to consider at compilation (.cpp) #
690  # * CMake project target definition depending on library type #
691  # public / private #
692  # #
693  #########################################################################
694  # CMAKE TARGET DEFINITION DEPENDENDING ON THE LIBRARY TYPE (SHARED or STATIC)
695  if (${DEFAULT_LIBRARY_NAME_CMAKE}_SHARED) # shared library
696  message(STATUS "Adding shared library: ${LIBRARY_TARGET_NAME}")
697  add_library(${LIBRARY_TARGET_NAME} SHARED ${${DEFAULT_LIBRARY_NAME_CMAKE}_SOURCES})
698  # prepare the library specific info (SONAME...)
699  set(${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES ${${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES}
700  VERSION "${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR}.${CAMITK_VERSION_PATCH}"
701  SOVERSION "${CAMITK_VERSION_MAJOR}"
702  )
703  # set the library specific info (SONAME...)
704  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ${${LIBRARY_TARGET_NAME}_LIBRARY_PROPERTIES} LINK_INTERFACE_LIBRARIES "")
705  elseif (${DEFAULT_LIBRARY_NAME_CMAKE}_STATIC) # static library
706  message(STATUS "Adding static library: ${LIBRARY_TARGET_NAME}")
707  add_library(${LIBRARY_TARGET_NAME} STATIC ${${DEFAULT_LIBRARY_NAME_CMAKE}_SOURCES})
708  else()
709  message(FATAL_ERROR "In adding static library ${LIBRARY_TARGET_NAME}.\n Please specify the library type: SHARED or STATIC")
710  endif()
711 
712 
713 
714  #########################################################################
715  # #
716  # CAMITK LIBRARIES DEPENDENCIES #
717  # #
718  # * Add in this section library dependencies to other camitk libraies #
719  # to keep a correct build order (NEEDS_CEP_LIBRARIES). #
720  # #
721  #########################################################################
722 
723  # CEP LIBRARIES DEPENDENCIES
724  set(CEP_LIBRARIES)
725  set(LIBRARIES_DEPENDENCY_LIST "") #use for generating the project.xml file
726  if(${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES)
727  foreach(CEP_LIBRARY_NEEDED ${${DEFAULT_LIBRARY_NAME_CMAKE}_NEEDS_CEP_LIBRARIES})
728  # include directories from build, camitk (local or global install).
729  include_directories(${CAMITK_BUILD_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
730  include_directories(${CAMITK_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
731  # file dependency
732  if (MSVC)
733  set(CEP_LIBRARIES ${CEP_LIBRARIES} debug ${CEP_LIBRARY_NEEDED}${CAMITK_DEBUG_POSTFIX}
734  optimized ${CEP_LIBRARY_NEEDED}
735  )
736  else()
737  if(PACKAGING_NSIS)
738  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
739  else()
740  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
741  endif()
742  endif()
743  # CMake / CDash dependencies
744  if(PACKAGING_NSIS)
745  add_dependencies(${LIBRARY_TARGET_NAME} library_${CEP_LIBRARY_NEEDED})
746  else()
747  add_dependencies(${LIBRARY_TARGET_NAME} library-${CEP_LIBRARY_NEEDED})
748  set(LIBRARIES_DEPENDENCY_LIST ${LIBRARIES_DEPENDENCY_LIST} library-${CEP_LIBRARY_NEEDED})
749  endif()
750  endforeach()
751  endif()
752 
753 
754 
755  #########################################################################
756  # #
757  # LINKING #
758  # #
759  # * Linking is the last stage of compilation #
760  # * Indicate what libraries to use for linking the target #
761  # #
762  #########################################################################
763  # LINKING LIBRARIES
764  target_link_libraries(${LIBRARY_TARGET_NAME} ${CEP_LIBRARIES} ${LINKER_EXTERNAL_LIBRARIES} ${LIBXML2_LIBRARY} ${ITK_LIBRARIES} ${QT_MODULES_LIBRARIES} ${XERCESC_LIBRARIES})
765 
766 
767 
768  #########################################################################
769  # #
770  # OUTPUT #
771  # #
772  # * Define the output directory (location and name) #
773  # * Define the output name of the library #
774  # * Add ${CAMITK_DEBUG_POSTFIX} suffix to Debug MSVC built libraries #
775  # #
776  #########################################################################
777 
778  # OUTPUT DIRECTORY LOCATION and NAME depending on the type of the library (PUBLIC or PRIVATE)
779  # DEBGUG POSTFIX FOR MSVC
780  if (${DEFAULT_LIBRARY_NAME_CMAKE}_PUBLIC) # Public library => build in the bin folder
781  if (MSVC)
782  # With Visual Studio, public libraries are built in build\bin directory, else it's in build\lib
783  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
784  LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
785  LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
786  )
787  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
788  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
789  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
790  )
791  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
792  ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
793  ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
794  )
795  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
796  else()
797  # for xcode generation, the <CONFIG> postfix should also be used, but "a la" UNIX (lib in /lib etc...)
798  # no need to check the generator with if(CMAKE_GENERATOR STREQUAL Xcode), as the <CONFIG> postfix should
799  # not affect the other unix generators
800  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR}
801  LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PUBLIC_LIB_DIR}
802  LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PUBLIC_LIB_DIR}
803  )
804  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR}
805  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PUBLIC_LIB_DIR}
806  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PUBLIC_LIB_DIR}
807  )
808  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PUBLIC_LIB_DIR}
809  ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PUBLIC_LIB_DIR}
810  ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PUBLIC_LIB_DIR}
811  )
812  endif()
813  else() # Private library => build in lib folder
814  if (MSVC)
815  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX})
816  endif()
817  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
818  LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
819  LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
820  )
821  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
822  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
823  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
824  )
825  set_target_properties(${LIBRARY_TARGET_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${CAMITK_BUILD_PRIVATE_LIB_DIR}
826  ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_PRIVATE_LIB_DIR}
827  ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_PRIVATE_LIB_DIR}
828  )
829  endif()
830 
831  # OUTUPUT LIBRARY NAME (without the prefix "library-").
832  string(REGEX REPLACE "^library_|^library-" "" LIBRARY_NAME ${LIBRARY_TARGET_NAME})
833  set_target_properties(${LIBRARY_TARGET_NAME}
834  PROPERTIES OUTPUT_NAME ${LIBRARY_NAME}
835  )
836 
837 
838 
839  #########################################################################
840  # #
841  # COMPILATION FLAG #
842  # #
843  # * Flags are options to give to the compiler #
844  # * Add user input flags #
845  # * Add platform specific flags #
846  # #
847  #########################################################################
848 
849  # USER INPUT COMPILER FLAG
850  if(${DEFAULT_LIBRARY_NAME_CMAKE}_DEFINES)
851  foreach (FLAG ${${DEFAULT_LIBRARY_NAME_CMAKE}_DEFINES})
852  add_definitions(-D${FLAG})
853  endforeach()
854  endif()
855 
856  # PLATFORM SPECIFIC COMPILER FLAG
857  # 64bits and other platform with relocation needs -fPIC
858  include(TestCXXAcceptsFlag)
859  check_cxx_accepts_flag(-fPIC FPIC_FLAG_ACCEPTED)
860  # no need to add -fPIC on mingw, otherwise it generates a warning: -fPIC ignored for target (all code is position independent) [enabled by default]
861  # msvc is also accepting the flag, but then produce warning D9002 : ignoring unknown option '-fPIC' cl
862  if(FPIC_FLAG_ACCEPTED AND NOT WIN32)
863  set_property(TARGET ${LIBRARY_TARGET_NAME} APPEND PROPERTY COMPILE_FLAGS -fPIC)
864  endif()
865 
866 
867 
868  #########################################################################
869  # #
870  # INSTALLATION #
871  # #
872  # * When installing the project, header files (.h) and test data are #
873  # copied into an installation folder to determine. #
874  # * Indicate in this section, where to install your project and which #
875  # files to copy into that folder (during local/global installation) #
876  # #
877  #########################################################################
878 
879  # FOLDER INSTALLATION
880  # Indicate where to install the library, dependending on its property (public / private)
881  if (${DEFAULT_LIBRARY_NAME_CMAKE}_PUBLIC) # public library
882  if(WIN32)
883  # public library -> install in bin folder
884  install(TARGETS ${LIBRARY_TARGET_NAME}
885  RUNTIME DESTINATION bin
886  LIBRARY DESTINATION lib
887  ARCHIVE DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
888  COMPONENT ${LIBRARY_NAME_INSTALL}
889  )
890  else()
891  # other public libraries -> install in lib folder
892  install(TARGETS ${LIBRARY_TARGET_NAME}
893  RUNTIME DESTINATION lib
894  LIBRARY DESTINATION lib
895  ARCHIVE DESTINATION lib
896  COMPONENT ${LIBRARY_NAME_INSTALL}
897  )
898  endif()
899  else()
900  # private library -> install in lib/camitk-version folder
901  install(TARGETS ${LIBRARY_TARGET_NAME}
902  RUNTIME DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
903  LIBRARY DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
904  ARCHIVE DESTINATION lib/${CAMITK_SHORT_VERSION_STRING}
905  COMPONENT ${LIBRARY_NAME_INSTALL}
906  )
907  endif()
908 
909  # HEADER FILES (.h) INSTALLATION
910  if(${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS_TO_INSTALL)
911  # If headers information provided for installation => install them
912  export_headers(${${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS_TO_INSTALL} COMPONENT ${LIBRARY_TARGET_NAME} GROUP libraries)
913  else()
914  # if not, install all headers (*.h) by default in the build/include/libraries/library-name directory
915  file(GLOB_RECURSE ${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
916  export_headers(${${DEFAULT_LIBRARY_NAME_CMAKE}_HEADERS} COMPONENT ${LIBRARY_TARGET_NAME} GROUP libraries)
917  endif()
918 
919 
920 
921  #########################################################################
922  # #
923  # CDASH SUBPROJECT DESCRIPTION #
924  # #
925  # * Update the XML descriton of the subprojects dependencies #
926  # for CDash. #
927  # #
928  #########################################################################
929  # CDASH XML SUBPROJECTS DESCRIPTION UPDATE
930  if(LIBRARY_TARGET_NAME STREQUAL "library-qtpropertybrowser")
931  # library-qtpropertybrowser is a corelib as library-camitkcore depends on it
932  camitk_sub_project_add(CORELIB ${LIBRARY_TARGET_NAME} DEPENDENCIES ${LIBRARIES_DEPENDENCY_LIST})
933  else()
934  camitk_sub_project_add(CEP_LIBRARY ${LIBRARY_TARGET_NAME} DEPENDENCIES ${LIBRARIES_DEPENDENCY_LIST})
935  endif()
936 
937 
938 
939  #########################################################################
940  # #
941  # TRANSLATION #
942  # #
943  # * CAMITK_TRANSLATIONS contains the list of language to translate #
944  # the QString to. #
945  # #
946  # * Create the translate.pro file which contains 4 sections: #
947  # - HEADERS: list of .h/.hpp files to look for tr("") QString#
948  # - SOURCES: list of .cpp files to look for tr("") QString #
949  # - FORMS: list of .ui files to look for tr("") QString #
950  # - TRANSLATIONS: list of .ts files which use CAMITK_TRANSLATIONS #
951  # to define each .ts file #
952  # #
953  # * Execute lupdate program to update the .ts files with new QString #
954  # found. #
955  # #
956  # * Execute lrelease program to create .qm files (binary equivalent of#
957  # .ts files #
958  # #
959  # * Create translate.qrc which contains the list of .qm files. #
960  # * Create the flags.qrc file which contains the list of .png flags #
961  # images #
962  # #
963  #########################################################################
964  if(${DEFAULT_LIBRARY_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE)
965  camitk_translate(EXTRA_LANGUAGE ${${DEFAULT_LIBRARY_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE})
966  else()
967  camitk_translate()
968  endif()
969 
970 
971 
972  #########################################################################
973  # #
974  # PACKAGING CATEGORIZATION #
975  # #
976  # * On Windows, when building a package (win32 installer), the #
977  # install shield wizard proposes you to select which component #
978  # to install. #
979  # * Each component to install has a short description following its #
980  # name to understand its role. #
981  # * This section deals with the categorization and the description #
982  # of the component in this installer. #
983  # #
984  #########################################################################
985 
986  # WINDOWS INSTALLER CATEGORIZATION
987  if(${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME) # This input variable describes the category
988  if (${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME MATCHES "SDK")
989  # The default SDK extensions are categorized as "required" and are not "unselectable" by the user at installation time
990  cpack_add_component(${LIBRARY_TARGET_NAME}
991  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
992  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
993  REQUIRED
994  GROUP SDK
995  )
996 
997  else()
998  # Extension is selectable for installation in the wizard of the installer
999  cpack_add_component(${LIBRARY_TARGET_NAME}
1000  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
1001  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
1002  GROUP ${${DEFAULT_LIBRARY_NAME_CMAKE}_CEP_NAME}
1003  )
1004  endif()
1005  else()
1006  # Extension if not categorized for packaging presentation
1007  cpack_add_component(${LIBRARY_TARGET_NAME}
1008  DISPLAY_NAME ${LIBRARY_TARGET_NAME}
1009  DESCRIPTION ${${DEFAULT_LIBRARY_NAME_CMAKE}_DESCRIPTION}
1010  )
1011 
1012  endif()
1013 
1014 end(){)
1015 
1016 # Old macro to configure a tool
1017 # Use camitk_library macro instead
1018 # TODO CAMITK_DEPRECATED. This macro is marked as deprecated. It is to be removed in CamiTK 4.0
1019 camitk_tool(){)
1020  message(WARNING "Warning: ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt: camitk_tool macro is deprecated, please usecamitk_library(...) instead (use the same parameters).")
1021 # string(REPLACE "NEEDS_TOOL" "NEEDS_CEP_LIBRARIES" OBSOLETE_ARGN ${ARGN})
1022 # message(STATUS "**************************************** ${ARGN} ===>>> ${OBSOLETE_ARGN} ")
1023  camitk_library(${OBSOLETE_ARGN})
1024 end(){)
A pseudo-namespace used to group CMake macros and functions.
string name
Definition: select.cpp:111
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:62
Definition: Action.cpp:40
string output
Definition: pml2csv.cpp:111
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
static void include(QRect &r, const QRect &rect)
Definition: canvas_typed/qtcanvas.cpp:98