Computer Assited Medical Intervention Tool Kit  version 3.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CamiTKApplication.h
Go to the documentation of this file.
58 
59  #########################################################################
60  # #
61  # ARGUMENTS PARSING #
62  # #
63  # * Use a macro to create the CMAKE variables according to the #
64  # provided options as input. #
65  # #
66  #########################################################################
67 
68  get_directory_name(${CMAKE_CURRENT_SOURCE_DIR} APPLICATION_NAME)
69 
70  parse_arguments(${APPLICATION_NAME_CMAKE}
71  "NEEDS_CEP_LIBRARIESNEEDS_TOOLNEEDS_COMPONENT_EXTENSIONNEEDS_ACTION_EXTENSIONDEFINESCXX_FLAGSADDITIONAL_SOURCESCEP_NAMEDESCRIPTIONEXTERNAL_LIBRARIESINCLUDE_DIRECTORIESEXTRA_TRANSLATE_LANGUAGE" # possible lists
72  "DISABLEDNEEDS_QT_MODULESNEEDS_ITKNEEDS_QTXMLNEEDS_XSDNEEDS_XERCESCNEEDS_PYTHON" # possible options
73  ${ARGN}
74  )
75 
76 
77 
78  #########################################################################
79  # #
80  # CREATE CMAKE VARIABLES #
81  # #
82  # * Create required and useful CMake variables for the macro #
83  # #
84  #########################################################################
85 
86  # CMAKE CACHE VARIABLE
87  # if it is the first cmake run, create the application variable with a correct initial value
88  if(NOT APPLICATION_${APPLICATION_NAME_CMAKE}_INTERNAL)
89  # add option to enable/disable this extension and set it to true by default
90  # Building the extension can be disabled by giving the argument DISABLED to the macro
91  # or by passing the flag -D${TYPE_EXTENSION_CMAKE}_${APPLICATION_NAME_CMAKE}_DISABLED:BOOL=TRUE
92  if(${APPLICATION_NAME_CMAKE}_DISABLED)
93  set(APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED FALSE)
94  else()
95  set(APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED TRUE)
96  endif()
97  set(APPLICATION_${APPLICATION_NAME_CMAKE} ${APPLICATION_${APPLICATION_NAME_CMAKE}_ENABLED} CACHE BOOL "Build application ${APPLICATION_NAME}")
98  set(APPLICATION_${APPLICATION_NAME_CMAKE}_INTERNAL TRUE CACHE INTERNAL "Is variable APPLICATION_${APPLICATION_NAME} already created?")
99  endif()
100 
101  # APPLICATION TARGET NAME
102  if (PACKAGING_NSIS)
103  # NSIS requires that cpack component names do not feature space or "-" characters
104  set(APPLICATION_TARGET_NAME application_${APPLICATION_NAME})
105  else()
106  set(APPLICATION_TARGET_NAME application-${APPLICATION_NAME})
107  endif()
108 
109 
110 
111  # if this extension is enabled, do everything needed
112  # otherwise... do nothing
113  if (APPLICATION_${APPLICATION_NAME_CMAKE})
114 
115  message(STATUS "Building application ${APPLICATION_NAME}")
116 
117 
118 
119  #########################################################################
120  # #
121  # INCLUDE DIRECTORIES #
122  # #
123  # * Include basic directories where to look header files #
124  # * Include also additional user provided directories #
125  # * These directories are used for compilation step #
126  # #
127  #########################################################################
128  # BASIC DIRECTORIES
129  include_directories(${CAMITK_INCLUDE_DIRECTORIES})
130  include_directories(${CMAKE_CURRENT_BINARY_DIR})
131  include_directories(${CMAKE_CURRENT_SOURCE_DIR})
132 
133  # USER INPUT DIRECTORIES
134  include_directories(${${APPLICATION_NAME_CMAKE}_INCLUDE_DIRECTORIES})
135 
136 
137 
138  #########################################################################
139  # #
140  # GATHER RESSOURCES #
141  # #
142  # * get all the headers (.h) and source files (.cpp) of the project #
143  # * create the needed Qt files (using moc and uic) #
144  # #
145  #########################################################################
146 
147  # get all headers, sources and do what is needed for Qt
148  # one need to do this just before the add_library so that all defines, include directories and link directories
149  # are set properly (gather_headers_and_sources include the call to Qt moc and uic)
150  gather_headers_and_sources(${APPLICATION_NAME})
151 
152 
153 
154  #########################################################################
155  # #
156  # ADDITIONAL KNOWN LIBRARY DEPENDENCIES #
157  # #
158  # * Look for specific library needed #
159  # * Specific libraries are specified as option with the #
160  # NEEDS_LIBRARY syntax (see macro syntax for more options) #
161  # * Backward compatibility : Warn user if using old NEEDS_TOOL syntax #
162  # #
163  #########################################################################
164 
165  # Looking for ITK
166  set(ITK_LIBRARIES "")
167  if(${APPLICATION_NAME_CMAKE}_NEEDS_ITK)
168  find_package(ITK REQUIRED)
169  if(ITK_FOUND)
170  include(${ITK_USE_FILE})
171  set(ITK_VERSION ${ITK_VERSION_MAJOR}.${ITK_VERSION_MINOR}.${ITK_VERSION_PATCH}) #ITK_VERSION is not always set
172  message(STATUS "${APPLICATION_TARGET_NAME}: Found ITK version ${ITK_VERSION}")
173 
174  # Now select the ITK libraries according to the ITK version found.
175  # ITK 3.x.x (mostly 3.20.1)
176  if ((${ITK_VERSION} VERSION_GREATER "3") AND (${ITK_VERSION} VERSION_LESS "4"))
177  if (MSVC) # Visual Studio compilers
178  if(MSVC90 OR MSVC10) #ITK 3.x only works with VS 2008 / 2010
179  set(ITK_LIBRARIES
180  debug ITKAlgorithms${CAMITK_DEBUG_POSTFIX}
181  optimized ITKAlgorithms
182  debug ITKBasicFilters${CAMITK_DEBUG_POSTFIX}
183  optimized ITKBasicFilters
184  debug ITKCommon${CAMITK_DEBUG_POSTFIX}
185  optimized ITKCommon
186  debug ITKIO${CAMITK_DEBUG_POSTFIX}
187  optimized ITKIO
188  debug ITKNrrdIO${CAMITK_DEBUG_POSTFIX}.lib
189  debug itkgdcm${CAMITK_DEBUG_POSTFIX}.lib
190  debug itkjpeg12${CAMITK_DEBUG_POSTFIX}.lib
191  debug itkjpeg16${CAMITK_DEBUG_POSTFIX}.lib
192  debug itkopenjpeg${CAMITK_DEBUG_POSTFIX}.lib
193  debug itkpng${CAMITK_DEBUG_POSTFIX}.lib
194  debug itktiff${CAMITK_DEBUG_POSTFIX}.lib
195  debug itkjpeg8${CAMITK_DEBUG_POSTFIX}.lib
196  debug ITKSpatialObject${CAMITK_DEBUG_POSTFIX}.lib
197  debug itkvnl_inst${CAMITK_DEBUG_POSTFIX}.lib
198  debug itkvnl_algo${CAMITK_DEBUG_POSTFIX}.lib
199  debug itkv3p_netlib${CAMITK_DEBUG_POSTFIX}.lib
200  debug itkvnl${CAMITK_DEBUG_POSTFIX}.lib
201  debug itkvcl${CAMITK_DEBUG_POSTFIX}.lib
202  debug itkv3p_lsqr${CAMITK_DEBUG_POSTFIX}.lib
203  debug ITKMetaIO${CAMITK_DEBUG_POSTFIX}.lib
204  debug itksys${CAMITK_DEBUG_POSTFIX}.lib
205  debug ITKDICOMParser${CAMITK_DEBUG_POSTFIX}.lib
206  debug ITKEXPAT${CAMITK_DEBUG_POSTFIX}.lib
207  debug ITKniftiio${CAMITK_DEBUG_POSTFIX}.lib
208  debug ITKznz${CAMITK_DEBUG_POSTFIX}.lib
209  debug itkzlib${CAMITK_DEBUG_POSTFIX}.lib
210  debug snmpapi.lib
211  debug rpcrt4.lib
212  debug ws2_32.lib
213  debug comctl32.lib
214  debug wsock32.lib
215  debug opengl32.lib
216  )
217  elseif(MSVC11 OR MSVC12) # Visual Studion 2012/2013
218  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")
219  endif()
220  elseif(MINGW)
221  message(FATAL_ERROR "CamiTK does not support ITK 3.x libraries for MinGW. You may file a feature request: https://bugzilla-timc.imag.fr/")
222  else() #APPLE OR UNIX
223  set(ITK_LIBRARIES ITKBasicFilters ITKCommon ITKIO ITKAlgorithms)
224  endif()
225 
226  # ITK 4.3.x (mostly 4.3.2)
227  elseif((${ITK_VERSION} VERSION_GREATER "4") AND (${ITK_VERSION} VERSION_LESS "4.4"))
228  if (MSVC) # Visual Studio compilers
229  if(MSVC90 OR MSVC10) #ITK 3.x only works with VS 2008 / 2010
230  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")
231  elseif(MSVC11 OR MSVC12) # Visual Studion 2012/2013
232  link_directories(${ITK_DIR}/../..)
233  set(ITK_LIBRARIES
234  # Debug libraries
235  debug ITKCommon-4.3${CAMITK_DEBUG_POSTFIX}.lib
236  debug ITKNrrdIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
237  debug itkgdcmCommon-4.3${CAMITK_DEBUG_POSTFIX}.lib
238  debug itkjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
239  debug itkopenjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
240  debug itkpng-4.3${CAMITK_DEBUG_POSTFIX}.lib
241  debug itktiff-4.3${CAMITK_DEBUG_POSTFIX}.lib
242  debug ITKSpatialObjects-4.3${CAMITK_DEBUG_POSTFIX}.lib
243  debug itkvnl_algo-4.3${CAMITK_DEBUG_POSTFIX}.lib
244  debug itkv3p_netlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
245  debug itkvnl-4.3${CAMITK_DEBUG_POSTFIX}.lib
246  debug itkvcl-4.3${CAMITK_DEBUG_POSTFIX}.lib
247  debug itkv3p_lsqr-4.3${CAMITK_DEBUG_POSTFIX}.lib
248  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
249  debug itksys-4.3${CAMITK_DEBUG_POSTFIX}.lib
250  debug ITKDICOMParser-4.3${CAMITK_DEBUG_POSTFIX}.lib
251  debug ITKEXPAT-4.3${CAMITK_DEBUG_POSTFIX}.lib
252  debug ITKniftiio-4.3${CAMITK_DEBUG_POSTFIX}.lib
253  debug ITKznz-4.3${CAMITK_DEBUG_POSTFIX}.lib
254  debug itkzlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
255  debug snmpapi.lib
256  debug rpcrt4.lib
257  debug ws2_32.lib
258  debug comctl32.lib
259  debug wsock32.lib
260  debug opengl32.lib
261  debug ITKIOGIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
262  debug ITKIONIFTI-4.3${CAMITK_DEBUG_POSTFIX}.lib
263  debug ITKIONRRD-4.3${CAMITK_DEBUG_POSTFIX}.lib
264  debug ITKIOPNG-4.3${CAMITK_DEBUG_POSTFIX}.lib
265  debug itkgdcmDICT-4.3${CAMITK_DEBUG_POSTFIX}.lib
266  debug itkgdcmDSED-4.3${CAMITK_DEBUG_POSTFIX}.lib
267  debug itkgdcmIOD-4.3${CAMITK_DEBUG_POSTFIX}.lib
268  debug itkgdcmjpeg8-4.3${CAMITK_DEBUG_POSTFIX}.lib
269  debug itkgdcmjpeg12-4.3${CAMITK_DEBUG_POSTFIX}.lib
270  debug itkgdcmjpeg16-4.3${CAMITK_DEBUG_POSTFIX}.lib
271  debug itkgdcmMSFF-4.3${CAMITK_DEBUG_POSTFIX}.lib
272  debug ITKgiftiio-4.3${CAMITK_DEBUG_POSTFIX}.lib
273  debug itkhdf5_cpp-4.3${CAMITK_DEBUG_POSTFIX}.lib
274  debug itkhdf5-4.3${CAMITK_DEBUG_POSTFIX}.lib
275  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
276  debug ITKIOBioRad-4.3${CAMITK_DEBUG_POSTFIX}.lib
277  debug ITKIOStimulate-4.3${CAMITK_DEBUG_POSTFIX}.lib
278  debug ITKIOTIFF-4.3${CAMITK_DEBUG_POSTFIX}.lib
279  debug ITKIOVTK-4.3${CAMITK_DEBUG_POSTFIX}.lib
280  debug ITKIOPNG-4.3${CAMITK_DEBUG_POSTFIX}.lib
281  debug ITKBiasCorrection-4.3${CAMITK_DEBUG_POSTFIX}.lib
282  debug ITKBioCell-4.3${CAMITK_DEBUG_POSTFIX}.lib
283  debug ITKFEM-4.3${CAMITK_DEBUG_POSTFIX}.lib
284  debug ITKIOBMP-4.3${CAMITK_DEBUG_POSTFIX}.lib
285  debug ITKIOCSV-4.3${CAMITK_DEBUG_POSTFIX}.lib
286  debug ITKIOGDCM-4.3${CAMITK_DEBUG_POSTFIX}.lib
287  debug ITKIOGE-4.3${CAMITK_DEBUG_POSTFIX}.lib
288  debug ITKIOGIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
289  debug ITKIOHDF5-4.3${CAMITK_DEBUG_POSTFIX}.lib
290  debug ITKIOImageBase-4.3${CAMITK_DEBUG_POSTFIX}.lib
291  debug ITKIOIPL-4.3${CAMITK_DEBUG_POSTFIX}.lib
292  debug ITKIOJPEG-4.3${CAMITK_DEBUG_POSTFIX}.lib
293  debug ITKIOLSM-4.3${CAMITK_DEBUG_POSTFIX}.lib
294  debug ITKIOMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
295  debug ITKIOMeta-4.3${CAMITK_DEBUG_POSTFIX}.lib
296  debug ITKIOSiemens-4.3${CAMITK_DEBUG_POSTFIX}.lib
297  debug ITKIOSpatialObjects-4.3${CAMITK_DEBUG_POSTFIX}.lib
298  debug ITKIOTransformBase-4.3${CAMITK_DEBUG_POSTFIX}.lib
299  debug ITKIOTransformHDF5-4.3${CAMITK_DEBUG_POSTFIX}.lib
300  debug ITKIOTransformInsightLegacy-4.3${CAMITK_DEBUG_POSTFIX}.lib
301  debug ITKIOTransformMatlab-4.3${CAMITK_DEBUG_POSTFIX}.lib
302  debug ITKIOXML-4.3${CAMITK_DEBUG_POSTFIX}.lib
303  debug ITKKLMRegionGrowing-4.3${CAMITK_DEBUG_POSTFIX}.lib
304  debug ITKLabelMap-4.3${CAMITK_DEBUG_POSTFIX}.lib
305  debug ITKMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
306  debug ITKMetaIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
307  debug itkNetlibSlatec-4.3${CAMITK_DEBUG_POSTFIX}.lib
308  debug itkopenjpeg-4.3${CAMITK_DEBUG_POSTFIX}.lib
309  debug ITKOptimizers-4.3${CAMITK_DEBUG_POSTFIX}.lib
310  debug ITKOptimizersv4-4.3${CAMITK_DEBUG_POSTFIX}.lib
311  debug ITKPath-4.3${CAMITK_DEBUG_POSTFIX}.lib
312  debug itkpng-4.3${CAMITK_DEBUG_POSTFIX}.lib
313  debug ITKPolynomials-4.3${CAMITK_DEBUG_POSTFIX}.lib
314  debug ITKQuadEdgeMesh-4.3${CAMITK_DEBUG_POSTFIX}.lib
315  debug ITKReview-4.3${CAMITK_DEBUG_POSTFIX}.lib
316  debug ITKStatistics-4.3${CAMITK_DEBUG_POSTFIX}.lib
317  debug itkv3p_lsqr-4.3${CAMITK_DEBUG_POSTFIX}.lib
318  debug itkv3p_netlib-4.3${CAMITK_DEBUG_POSTFIX}.lib
319  debug itkvcl-4.3${CAMITK_DEBUG_POSTFIX}.lib
320  debug ITKVideoCore-4.3${CAMITK_DEBUG_POSTFIX}.lib
321  debug ITKVideoIO-4.3${CAMITK_DEBUG_POSTFIX}.lib
322  debug ITKVTK-4.3${CAMITK_DEBUG_POSTFIX}.lib
323  debug ITKVNLInstantiation-4.3${CAMITK_DEBUG_POSTFIX}.lib
324  debug ITKWatersheds-4.3${CAMITK_DEBUG_POSTFIX}.lib
325  # Release librariesdebug
326  optimized ITKCommon-4.3.lib
327  optimized ITKNrrdIO-4.3.lib
328  optimized itkgdcmCommon-4.3.lib
329  optimized itkjpeg-4.3.lib
330  optimized itkopenjpeg-4.3.lib
331  optimized itkpng-4.3.lib
332  optimized itktiff-4.3.lib
333  optimized ITKSpatialObjects-4.3.lib
334  optimized itkvnl_algo-4.3.lib
335  optimized itkv3p_netlib-4.3.lib
336  optimized itkvnl-4.3.lib
337  optimized itkvcl-4.3.lib
338  optimized itkv3p_lsqr-4.3.lib
339  optimized ITKMetaIO-4.3.lib
340  optimized itksys-4.3.lib
341  optimized ITKDICOMParser-4.3.lib
342  optimized ITKEXPAT-4.3.lib
343  optimized ITKniftiio-4.3.lib
344  optimized ITKznz-4.3.lib
345  optimized itkzlib-4.3.lib
346  optimized snmpapi.lib
347  optimized rpcrt4.lib
348  optimized ws2_32.lib
349  optimized comctl32.lib
350  optimized wsock32.lib
351  optimized opengl32.lib
352  optimized ITKIOGIPL-4.3.lib
353  optimized ITKIONIFTI-4.3.lib
354  optimized ITKIONRRD-4.3.lib
355  optimized ITKIOPNG-4.3.lib
356  optimized itkgdcmDICT-4.3.lib
357  optimized itkgdcmDSED-4.3.lib
358  optimized itkgdcmIOD-4.3.lib
359  optimized itkgdcmjpeg8-4.3.lib
360  optimized itkgdcmjpeg12-4.3.lib
361  optimized itkgdcmjpeg16-4.3.lib
362  optimized itkgdcmMSFF-4.3.lib
363  optimized ITKgiftiio-4.3.lib
364  optimized itkhdf5_cpp-4.3.lib
365  optimized itkhdf5-4.3.lib
366  optimized ITKMetaIO-4.3.lib
367  optimized ITKIOBioRad-4.3.lib
368  optimized ITKIOStimulate-4.3.lib
369  optimized ITKIOTIFF-4.3.lib
370  optimized ITKIOVTK-4.3.lib
371  optimized ITKIOPNG-4.3.lib
372  optimized ITKBiasCorrection-4.3.lib
373  optimized ITKBioCell-4.3.lib
374  optimized ITKFEM-4.3.lib
375  optimized ITKIOBMP-4.3.lib
376  optimized ITKIOCSV-4.3.lib
377  optimized ITKIOGDCM-4.3.lib
378  optimized ITKIOGE-4.3.lib
379  optimized ITKIOGIPL-4.3.lib
380  optimized ITKIOHDF5-4.3.lib
381  optimized ITKIOImageBase-4.3.lib
382  optimized ITKIOIPL-4.3.lib
383  optimized ITKIOJPEG-4.3.lib
384  optimized ITKIOLSM-4.3.lib
385  optimized ITKIOMesh-4.3.lib
386  optimized ITKIOMeta-4.3.lib
387  optimized ITKIOSiemens-4.3.lib
388  optimized ITKIOSpatialObjects-4.3.lib
389  optimized ITKIOTransformBase-4.3.lib
390  optimized ITKIOTransformHDF5-4.3.lib
391  optimized ITKIOTransformInsightLegacy-4.3.lib
392  optimized ITKIOTransformMatlab-4.3.lib
393  optimized ITKIOXML-4.3.lib
394  optimized ITKKLMRegionGrowing-4.3.lib
395  optimized ITKLabelMap-4.3.lib
396  optimized ITKMesh-4.3.lib
397  optimized ITKMetaIO-4.3.lib
398  optimized itkNetlibSlatec-4.3.lib
399  optimized itkopenjpeg-4.3.lib
400  optimized ITKOptimizers-4.3.lib
401  optimized ITKOptimizersv4-4.3.lib
402  optimized ITKPath-4.3.lib
403  optimized itkpng-4.3.lib
404  optimized ITKPolynomials-4.3.lib
405  optimized ITKQuadEdgeMesh-4.3.lib
406  optimized ITKReview-4.3.lib
407  optimized ITKStatistics-4.3.lib
408  optimized itkv3p_lsqr-4.3.lib
409  optimized itkv3p_netlib-4.3.lib
410  optimized itkvcl-4.3.lib
411  optimized ITKVideoCore-4.3.lib
412  optimized ITKVideoIO-4.3.lib
413  optimized ITKVTK-4.3.lib
414  optimized ITKVNLInstantiation-4.3.lib
415  optimized ITKWatersheds-4.3.lib
416  )
417  endif()
418  elseif(MINGW OR APPLE)
419  link_directories(${ITK_DIR}/../..)
420  set(ITK_LIBRARIES
421  ITKCommon-4.3
422  ITKNrrdIO-4.3
423  itkgdcmCommon-4.3
424  itkjpeg-4.3
425  itkopenjpeg-4.3
426  itkpng-4.3
427  itktiff-4.3
428  ITKSpatialObjects-4.3
429  itkvnl_algo-4.3
430  itkv3p_netlib-4.3
431  itkvnl-4.3
432  itkvcl-4.3
433  itkv3p_lsqr-4.3
434  ITKMetaIO-4.3
435  itksys-4.3
436  ITKDICOMParser-4.3
437  ITKEXPAT-4.3
438  ITKniftiio-4.3
439  ITKznz-4.3
440  itkzlib-4.3
441  snmpapi
442  rpcrt4
443  ws2_32
444  comctl32
445  wsock32
446  opengl32
447  ITKIOGIPL-4.3
448  ITKIONIFTI-4.3
449  ITKIONRRD-4.3
450  ITKIOPNG-4.3
451  itkgdcmDICT-4.3
452  itkgdcmDSED-4.3
453  itkgdcmIOD-4.3
454  itkgdcmjpeg8-4.3
455  itkgdcmjpeg12-4.3
456  itkgdcmjpeg16-4.3
457  itkgdcmMSFF-4.3
458  ITKgiftiio-4.3
459  itkhdf5_cpp-4.3
460  itkhdf5-4.3
461  ITKMetaIO-4.3
462  ITKIOBioRad-4.3
463  ITKIOStimulate-4.3
464  ITKIOTIFF-4.3
465  ITKIOVTK-4.3
466  ITKIOPNG-4.3
467  ITKBiasCorrection-4.3
468  ITKBioCell-4.3
469  ITKFEM-4.3
470  ITKIOBMP-4.3
471  ITKIOCSV-4.3
472  ITKIOGDCM-4.3
473  ITKIOGE-4.3
474  ITKIOGIPL-4.3
475  ITKIOHDF5-4.3
476  ITKIOImageBase-4.3
477  ITKIOIPL-4.3
478  ITKIOJPEG-4.3
479  ITKIOLSM-4.3
480  ITKIOMesh-4.3
481  ITKIOMeta-4.3
482  ITKIOSiemens-4.3
483  ITKIOSpatialObjects-4.3
484  ITKIOTransformBase-4.3
485  ITKIOTransformHDF5-4.3
486  ITKIOTransformInsightLegacy-4.3
487  ITKIOTransformMatlab-4.3
488  ITKIOXML-4.3
489  ITKKLMRegionGrowing-4.3
490  ITKLabelMap-4.3
491  ITKMesh-4.3
492  ITKMetaIO-4.3
493  itkNetlibSlatec-4.3
494  itkopenjpeg-4.3
495  ITKOptimizers-4.3
496  ITKOptimizersv4-4.3
497  ITKPath-4.3
498  itkpng-4.3
499  ITKPolynomials-4.3
500  ITKQuadEdgeMesh-4.3
501  ITKReview-4.3
502  ITKStatistics-4.3
503  itkv3p_lsqr-4.3
504  itkv3p_netlib-4.3
505  itkvcl-4.3
506  ITKVideoCore-4.3
507  ITKVideoIO-4.3
508  ITKVTK-4.3
509  ITKVNLInstantiation-4.3
510  ITKWatersheds-4.3
511  )
512  else() #Linux
513  set(ITK_LIBRARIES ITKCommon-4.3)
514  endif()
515 
516  # ITK 4.5.x (mostly 4.5.1)
517  elseif((${ITK_VERSION} VERSION_GREATER "4.4") AND (${ITK_VERSION} VERSION_LESS "4.7"))
518  if(MSVC)
519  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/")
520  elseif(MINGW)
521  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/")
522  elseif(APPLE)
523  set(ITK_LIBRARIES
524  ITKBiasCorrection
525  ITKBioCell
526  ITKCommon
527  ITKDICOMParser
528  ITKEXPAT
529  ITKFEM
530  ITKGPUAnisotropicSmoothing
531  ITKGPUCommon
532  ITKGPUFiniteDifference
533  ITKGPUImageFilterBase
534  ITKGPUPDEDeformable
535  ITKGPUSmoothing
536  ITKGPUThresholding
537  ITKIOBMP
538  ITKIOBioRad
539  ITKIOCSV
540  ITKIOGDCM
541  ITKIOGE
542  ITKIOGIPL
543  ITKIOHDF5
544  ITKIOIPL
545  ITKIOImageBase
546  ITKIOJPEG
547  ITKIOLSM
548  ITKIOMesh
549  ITKIOMeta
550  ITKIONIFTI
551  ITKIONRRD
552  ITKIOPNG
553  ITKIOSiemens
554  ITKIOSpatialObjects
555  ITKIOStimulate
556  ITKIOTIFF
557  ITKIOTransformBase
558  ITKIOTransformHDF5
559  ITKIOTransformInsightLegacy
560  ITKIOTransformMatlab
561  ITKIOVTK
562  ITKIOXML
563  ITKKLMRegionGrowing
564  ITKLabelMap
565  ITKMesh
566  ITKMetaIO
567  ITKNrrdIO
568  ITKOptimizers
569  ITKOptimizersv4
570  ITKPath
571  ITKPolynomials
572  ITKQuadEdgeMesh
573  ITKReview
574  ITKSpatialObjects
575  ITKStatistics
576  ITKVNLInstantiation
577  ITKVTK
578  ITKVideoCore
579  ITKVideoIO
580  ITKWatersheds
581  ITKgiftiio
582  ITKniftiio
583  ITKznz
584  itkNetlibSlatec
585  itkdouble-conversion
586  itkhdf5
587  itkhdf5_cpp
588  itkjpeg
589  itkopenjpeg
590  itkpng
591  itksys
592  itktiff
593  itkv3p_lsqr
594  itkv3p_netlib
595  itkvcl
596  itkvnl
597  itkvnl_algo
598  itkzlib
599  )
600  else() #Linux
601  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/")
602  endif()
603 
604  # ITK version > 4.6 (mostly ITK 5.x)
605  else()
606  message(FATAL_ERROR "CamiTK does not support yet ITK version 5.x. You may file a feature request: https://bugzilla-timc.imag.fr/")
607  endif()
608  endif()
609  endif() #NEEDS ITK
610 
611  # XERCES-C
612  set(XERCESC_LIBRARIES)
613  if(${APPLICATION_NAME_CMAKE}_NEEDS_XERCESC)
614  # XercesC is required
615  find_package(XercesC REQUIRED)
616  if (XERCESC_FOUND)
617  include_directories(${XERCESC_INCLUDE_DIR})
618  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
619  else()
620  # most probably win32 or crosscompiling
621  message(FATAL_ERROR "${APPLICATION_NAME}: xerces-c required. Please provide Xerces-C path.")
622  endif()
623  endif()
624 
625  # XSD
626  if(${APPLICATION_NAME_CMAKE}_NEEDS_XSD)
627  # XercesC is required
628  find_package(XercesC REQUIRED)
629  if (XERCESC_FOUND)
630  include_directories(${XERCESC_INCLUDE_DIR})
631  set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
632  find_package(XSD REQUIRED)
633  include_directories(${XSD_INCLUDE_DIR})
634  else()
635  # most probably win32 or crosscompiling
636  message(FATAL_ERROR "${APPLICATION_NAME}: xerces-c required because of XSD cxx, please set XERCESC_INCLUDE_DIR")
637  endif()
638  endif()
639 
640  # PYTHON
641  set(PYTHON_LIBRARIES "")
642  if(${APPLICATION_NAME_CMAKE}_NEEDS_PYTHON)
643  message(STATUS "Python needed by ${APPLICATION_NAME}")
644  find_package(PythonLibs 2.7 REQUIRED)
645  if(PYTHONLIBS_FOUND)
646  message(STATUS "Python found (needed by ${APPLICATION_NAME})")
647  include_directories(${PYTHON_INCLUDE_DIRS})
648  # PYTHON_LIRARIES is automatically and correctly set by find_package
649  else()
650  message(FATAL_ERROR "Python (2.7 or above) is required by ${APPLICATION_NAME} : please add your python installation dir to your PATH environment variable")
651  endif()
652  endif()
653 
654  # QT MODULES
655  set(QT_MODULES_LIBRARIES)
656  if(${APPLICATION_NAME_CMAKE}_NEEDS_QT_MODULES)
657  find_package(Qt4 "4.7" COMPONENTS QtCore QtGui QtXml QtXmlPatterns QtWebkit QtOpenGL QtScript QtSQL QtNetwork REQUIRED)
658  if(NOT QT4_FOUND)
659  message(SEND_ERROR "${APPLICATION_NAME} : Failed to find Qt 4.7 or greater. This is needed by CamiTK.")
660  endif()
661 
662  # CMake will add the Qt modules specific include directories
663  include(${QT_USE_FILE})
664  # Qt additional modules are required for linking
665  set(QT_MODULES_LIBRARIES ${QT_LIBRARIES})
666  endif()
667 
668  # EXTERNAL LIBRARIES
669  set(EXTERNAL_LIBRARIES)
670  if(${APPLICATION_NAME_CMAKE}_EXTERNAL_LIBRARIES)
671  foreach(EXTERNAL_LIBRARY ${${APPLICATION_NAME_CMAKE}_EXTERNAL_LIBRARIES})
672  if (MSVC) # TODO We have to decide how to handle debug version of external libraries
673  set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES}
674  debug ${EXTERNAL_LIBRARY}${CAMITK_DEBUG_POSTFIX}
675  optimized ${EXTERNAL_LIBRARY}
676  )
677  else()
678  set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} ${EXTERNAL_LIBRARY})
679  endif()
680  endforeach()
681  endif()
682 
683  # BACKWARD COMPATIBILITY
684  # NEEDS_TOOLS option
685  # TODO CAMITK_DEPRECATED. This option is marked as deprecated. It is to be removed in CamiTK 4.0
686  # check deprecated (and warn)
687  # TODO CAMITK_DEPRECATED. This option is marked as deprecated. It is to be removed in CamiTK 4.0
688  if(${APPLICATION_NAME_CMAKE}_NEEDS_TOOL)
689  message(WARNING "Warning: ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt: camitk_application macro option NEEDS_TOOL is deprecated, please use NEEDS_CEP_LIBRARIES instead..")
690  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${${APPLICATION_NAME_CMAKE}_NEEDS_TOOL})
691  endif()
692 
693 
694 
695  #########################################################################
696  # #
697  # LINK DIRECTORIES #
698  # #
699  # * Link directories are used to indicate the compiler where #
700  # to look for folder containing libraries to link with. #
701  # #
702  #########################################################################
703  # CAMITK BASIC LIB DIRECTORIES
704  link_directories(${CAMITK_LINK_DIRECTORIES})
705 
706 
707 
708  #########################################################################
709  # #
710  # TARGET COMPILATION DEFINITION #
711  # #
712  # * Additional sources files to consider at compilation (.cpp) #
713  # * CMake project target definition #
714  # #
715  #########################################################################
716  # EXTERNAL SOURCES
717  set(${APPLICATION_NAME}_SOURCES ${${APPLICATION_NAME}_SOURCES} ${${APPLICATION_NAME_CMAKE}_ADDITIONAL_SOURCES})
718 
719  # APPLE BUNDLE DEFINITIONS
720  if(APPLE)
721  set(MACOSX_BUNDLE_INFO_STRING "${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
722  set(MACOSX_BUNDLE_BUNDLE_VERSION "${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
723  set(MACOSX_BUNDLE_LONG_VERSION_STRING "${APPLICATION_TARGET_NAME} ${CAMITK_SHORT_VERSION_STRING}")
724  set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${CAMITK_SHORT_VERSION_STRING}")
725  set(MACOSX_BUNDLE_COPYRIGHT "2014 UJF")
726  set(MACOSX_BUNDLE_ICON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.icns")
727  set(MACOSX_BUNDLE_BUNDLE_NAME "${APPLICATION_TARGET_NAME}")
728 
729  set(MACOSX_BUNDLE_RESOURCES "${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_TARGET_NAME}.app/Contents/Resources")
730  set(MACOSX_BUNDLE_ICON "${MACOSX_BUNDLE_ICON_FILE}")
731  execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${MACOSX_BUNDLE_RESOURCES})
732  execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${MACOSX_BUNDLE_ICON} ${MACOSX_BUNDLE_RESOURCES})
733  endif()
734 
735  # CMAKE TARGET DEFINITION
736 # add_executable(${APPLICATION_TARGET_NAME} MACOSX_BUNDLE ${${APPLICATION_NAME}_SOURCES})
737  add_executable(${APPLICATION_TARGET_NAME} ${${APPLICATION_NAME}_SOURCES})
738 
739 
740 
741  #########################################################################
742  # #
743  # CAMITK ACTION / COMPONENT / LIBRARIES DEPENDENCIES #
744  # #
745  # * Look for action / component / libraries dependencies #
746  # * Specific actions / components / libraries are specified as option #
747  # with the NEEDS_ACTION/COMPONENT_EXTENSION/CEP_LIBRARIES syntax #
748  # * Add dependencies to library-camitkcore and the testing #
749  # action/component if test are runned on it #
750  # #
751  #########################################################################
752 
753  # 1st CAMITKCORE LIBRARY DEPENDENCY
754  add_dependencies(${APPLICATION_TARGET_NAME} ${CAMITK_CORE_TARGET_LIB_NAME})
755 
756  # 2nd COMPONENTS DEPENDENCIES
757  if(${APPLICATION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION)
758  set(COMPONENTS_DEPENDENCY_LIST "") #use for generating the project.xml file
759  foreach(COMPONENT_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_COMPONENT_EXTENSION})
760  # include directories from build, camitk (local or global install).
761  include_directories(${CAMITK_BUILD_INCLUDE_DIR}/components/${COMPONENT_NEEDED})
762  include_directories(${CAMITK_INCLUDE_DIR}/components/${COMPONENT_NEEDED})
763  # file dependency
764  if (MSVC)
765  set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES}
766  debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/components/${COMPONENT_NEEDED}${CAMITK_DEBUG_POSTFIX}
767  optimized ${COMPONENT_NEEDED}
768  )
769  else()
770  set(COMPONENT_EXTENSION_LIBRARIES ${COMPONENT_EXTENSION_LIBRARIES} ${COMPONENT_NEEDED})
771  endif()
772  # CMake / CDash dependencies
773  if(PACKAGING_NSIS)
774  add_dependencies(${APPLICATION_TARGET_NAME} component_${COMPONENT_NEEDED})
775  else()
776  add_dependencies(${APPLICATION_TARGET_NAME} component-${COMPONENT_NEEDED})
777  set(COMPONENTS_DEPENDENCY_LIST ${COMPONENTS_DEPENDENCY_LIST} component-${COMPONENT_NEEDED})
778  endif()
779  endforeach()
780  endif()
781 
782  # 3rd ACTIONS DEPENDENCIES
783  if(${APPLICATION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION)
784  set(ACTIONS_DEPENDENCY_LIST "") #use for generating the project.xml file
785  foreach(ACTION_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_ACTION_EXTENSION})
786  # include directories from build, camitk (local or global install).
787  include_directories(${CAMITK_BUILD_INCLUDE_DIR}/actions/${ACTION_NEEDED})
788  include_directories(${CAMITK_INCLUDE_DIR}/actions/${ACTION_NEEDED})
789  # file dependency
790  if (MSVC)
791  set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES}
792  debug ${CAMITK_BUILD_PRIVATE_LIB_DIR}/actions/${ACTION_NEEDED}${CAMITK_DEBUG_POSTFIX}
793  optimized ${ACTION_NEEDED}
794  )
795  else()
796  set(ACTION_EXTENSION_LIBRARIES ${ACTION_EXTENSION_LIBRARIES} ${ACTION_NEEDED})
797  endif()
798  # CMake / CDash dependencies
799  if (PACKAGING_NSIS)
800  add_dependencies(${APPLICATION_TARGET_NAME} action_${ACTION_NEEDED})
801  else()
802  add_dependencies(${APPLICATION_TARGET_NAME} action-${ACTION_NEEDED})
803  set(ACTIONS_DEPENDENCY_LIST ${ACTIONS_DEPENDENCY_LIST} action-${ACTION_NEEDED})
804  endif()
805  endforeach()
806  endif()
807 
808  # 4th CEP LIBRARIES DEPENDENCIES
809  if(${APPLICATION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES)
810  set(CEP_LIBRARIES_DEPENDENCY_LIST "") #use for generating the project.xml file
811  foreach(CEP_LIBRARY_NEEDED ${${APPLICATION_NAME_CMAKE}_NEEDS_CEP_LIBRARIES})
812  # include directories from build, camitk (local or global install).
813  include_directories(${CAMITK_BUILD_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
814  include_directories(${CAMITK_INCLUDE_DIR}/libraries/${CEP_LIBRARY_NEEDED})
815  # file dependency
816  if (MSVC)
817  set(CEP_LIBRARIES ${CEP_LIBRARIES} debug ${CEP_LIBRARY_NEEDED}${CAMITK_DEBUG_POSTFIX}
818  optimized ${CEP_LIBRARY_NEEDED}
819  )
820  else()
821  if(PACKAGING_NSIS)
822  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
823  else()
824  set(CEP_LIBRARIES ${CEP_LIBRARIES} ${CEP_LIBRARY_NEEDED})
825  endif()
826  endif()
827  # CMake / CDash dependencies
828  if (PACKAGING_NSIS)
829  add_dependencies(${APPLICATION_TARGET_NAME} library_${CEP_LIBRARY_NEEDED})
830  else()
831  add_dependencies(${APPLICATION_TARGET_NAME} library-${CEP_LIBRARY_NEEDED})
832  set(CEP_LIBRARIES_DEPENDENCY_LIST ${CEP_LIBRARIES_DEPENDENCY_LIST} library-${CEP_LIBRARY_NEEDED})
833  endif()
834  endforeach()
835  endif()
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(${APPLICATION_NAME_CMAKE}_DEFINES)
851  foreach (FLAG ${${APPLICATION_NAME_CMAKE}_DEFINES})
852  add_definitions(-D${FLAG})
853  endforeach()
854  endif()
855 
856  # USER INPUT CUSTOM COMPILER FLAG
857  if(${APPLICATION_NAME_CMAKE}_CXX_FLAGS)
858  foreach (FLAG ${${APPLICATION_NAME_CMAKE}_CXX_FLAGS})
859  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FLAG}")
860  endforeach()
861  endif()
862 
863 
864 
865  #########################################################################
866  # #
867  # LINKING #
868  # #
869  # * Linking is the last stage of compilation #
870  # * Indicate what libraries to use for linking the target #
871  # #
872  #########################################################################
873  # LINKING LIBRARIES
874  target_link_libraries(${APPLICATION_TARGET_NAME} ${CAMITK_CORE_LIBRARIES} ${CAMITK_LIBRARIES} ${COMPONENT_EXTENSION_LIBRARIES} ${ACTION_EXTENSION_LIBRARIES} ${CEP_LIBRARIES} ${QT_MODULES_LIBRARIES} ${XERCESC_LIBRARY} ${ITK_LIBRARIES} ${PYTHON_LIBRARIES} ${EXTERNAL_LIBRARIES})
875 
876 
877 
878  #########################################################################
879  # #
880  # OUTPUT #
881  # #
882  # * Define the output directory (location and name) #
883  # * Define the output name of the library #
884  # * Add ${CAMITK_DEBUG_POSTFIX} suffix to Debug MSVC built libraries #
885  # #
886  #########################################################################
887 
888  # OUTPUT NAME
889  if (MSVC)
890  set_target_properties(${APPLICATION_TARGET_NAME}
891  PROPERTIES OUTPUT_NAME camitk-${APPLICATION_NAME}
892  DEBUG_POSTFIX ${CAMITK_DEBUG_POSTFIX}
893  )
894  else()
895  set_target_properties(${APPLICATION_TARGET_NAME}
896  PROPERTIES OUTPUT_NAME camitk-${APPLICATION_NAME}
897  )
898  endif()
899 
900  # OUTPUT DIRECTORY LOCATION
901  # always in bin folder
902  set_target_properties(${APPLICATION_TARGET_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CAMITK_BUILD_BIN_DIR}
903  RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CAMITK_BUILD_BIN_DIR}
904  RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CAMITK_BUILD_BIN_DIR}
905  )
906 
907  #########################################################################
908  # #
909  # INSTALLATION #
910  # #
911  # * When installing the project, header files (.h) and test data are #
912  # copied into a installation folder to determine. #
913  # * Indicate in this section, where to install your project and which #
914  # files to copy into that folder (during local/global installation) #
915  # #
916  #########################################################################
917 
918  # FOLDER INSTALLATION
919  # Indicate where to install the application
920 # if (NOT APPLE)
921  install(TARGETS ${APPLICATION_TARGET_NAME}
922  RUNTIME DESTINATION bin
923  COMPONENT ${APPLICATION_TARGET_NAME}
924  )
925  # else ()
926 # set (PLUGINS QtCore QtGui QtXml QtXmlPatterns)
927 # include(DeployQt4)
928 # install_qt4_executable("bin/camitk-${APPLICATION_NAME}.app" "${PLUGINS}")
929 # endif()
930 
931 
932 
933  #########################################################################
934  # #
935  # CDASH SUBPROJECT DESCRIPTION #
936  # #
937  # * Update the XML descriton of the subprojects dependenicies #
938  # for CDash. #
939  # #
940  #########################################################################
941  # CDASH XML SUBPROJECTS DESCRIPTION UPDATE
942  if(NOT ((APPLICATION_TARGET_NAME STREQUAL "application-testactions") OR (APPLICATION_TARGET_NAME STREQUAL "application-testcomponents")))
943  # We will add manually the CDash dependencies of the testing applications
944  # See CamiTKSubProjectValidate.cmake
945  camitk_sub_project_add(APPLICATION ${APPLICATION_TARGET_NAME} DEPENDENCIES library-camitkcore ${COMPONENTS_DEPENDENCY_LIST} ${ACTIONS_DEPENDENCY_LIST} ${CEP_LIBRARIES_DEPENDENCY_LIST})
946  endif()
947 
948 
949 
950  #########################################################################
951  # #
952  # TRANSLATION #
953  # #
954  # * CAMITK_TRANSLATIONS contains the list of language to translate #
955  # the QString to. #
956  # #
957  # * Create the translate.pro file which contains 4 sections: #
958  # - HEADERS: list of .h/.hpp files to look for tr("") QString#
959  # - SOURCES: list of .cpp files to look for tr("") QString #
960  # - FORMS: list of .ui files to look for tr("") QString #
961  # - TRANSLATIONS: list of .ts files which use CAMITK_TRANSLATIONS #
962  # to define each .ts file #
963  # #
964  # * Execute lupdate program to update the .ts files with new QString #
965  # found. #
966  # #
967  # * Execute lrelease program to create .qm files (binary equivalent of#
968  # .ts files #
969  # #
970  # * Create translate.qrc which contains the list of .qm files. #
971  # * Create the flags.qrc file which contains the list of .png flags #
972  # images #
973  # #
974  #########################################################################
975  if(${APPLICATION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE)
976  camitk_translate(EXTRA_LANGUAGE ${${APPLICATION_NAME_CMAKE}_EXTRA_TRANSLATE_LANGUAGE})
977  else()
978  camitk_translate()
979  endif()
980 
981 
982  #########################################################################
983  # #
984  # PACKAGING CATEGORIZATION #
985  # #
986  # * On Windows, when building a package (win32 installer), the #
987  # install shield wizard proposes you to select which component #
988  # to install. #
989  # * Each component to install has a short description following its #
990  # name to understand its role. #
991  # * This section deals with the categorization and the description #
992  # of the component in this installer. #
993  # #
994  #########################################################################
995 
996  # WINDOWS INSTALLER CATEGORIZATION
997  if(${APPLICATION_NAME_CMAKE}_CEP_NAME)
998  if (${APPLICATION_NAME_CMAKE}_CEP_NAME MATCHES "SDK")
999  # The default SDK extensions are categorized as "required" and are not "unselectable" by the user at installation time
1000  cpack_add_component(${APPLICATION_TARGET_NAME}
1001  DISPLAY_NAME ${APPLICATION_TARGET_NAME}
1002  DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION}
1003  REQUIRED
1004  GROUP SDK
1005  )
1006 
1007  else()
1008  # Extension is selectable for installation in the wizard of the installer
1009  cpack_add_component(${APPLICATION_TARGET_NAME}
1010  DISPLAY_NAME ${APPLICATION_TARGET_NAME}
1011  DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION}
1012  GROUP ${${APPLICATION_NAME_CMAKE}_CEP_NAME}
1013  )
1014  endif()
1015  else()
1016  # Extension if not categorized for packaging presentation
1017  cpack_add_component(${APPLICATION_TARGET_NAME}
1018  DISPLAY_NAME ${APPLICATION_TARGET_NAME}
1019  DESCRIPTION ${${APPLICATION_NAME_CMAKE}_DESCRIPTION}
1020  )
1021 
1022  endif()
1023 
1024  # additional unix system files/resources
1025  if(UNIX)
1026  # Man page installation
1027  set(${APPLICATION_NAME_CMAKE}_MAN_PAGE ${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.1)
1028  if (EXISTS ${${APPLICATION_NAME_CMAKE}_MAN_PAGE})
1029  message(STATUS "Found man page for ${APPLICATION_TARGET_NAME}")
1030  install(FILES ${${APPLICATION_NAME_CMAKE}_MAN_PAGE}
1031  DESTINATION ${CAMITK_APPLICATION_MAN_INSTALL_DIR}
1032  )
1033  else()
1034  # check if .in exists
1035  if (EXISTS ${${APPLICATION_NAME_CMAKE}_MAN_PAGE}.in)
1036  message(STATUS "Found man page configuration file for ${APPLICATION_TARGET_NAME}")
1037  install(CODE "message(STATUS \"Updating ${APPLICATION_NAME} man page (version ${CAMITK_VERSION_MAJOR}.${CAMITK_VERSION_MINOR} as of ${CURRENT_DATE})\")")
1038  # set variable in sub-cmake shell
1039  install(CODE "set(APPLICATION_NAME ${APPLICATION_NAME})")
1040  install(CODE "set(CURRENT_DATE ${CURRENT_DATE})")
1041  install(CODE "set(CAMITK_VERSION_MAJOR ${CAMITK_VERSION_MAJOR})")
1042  install(CODE "set(CAMITK_VERSION_MINOR ${CAMITK_VERSION_MINOR})")
1043  # remove previous version
1044  install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_CURRENT_BINARY_DIR}/camitk-${APPLICATION_NAME}.1)")
1045  # configure current version
1046  install(CODE "configure_file(${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.1.in ${CMAKE_CURRENT_BINARY_DIR}/camitk-${APPLICATION_NAME}.1 @ONLY)")
1047  # install file
1048  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/camitk-${APPLICATION_NAME}.1 DESTINATION ${CAMITK_APPLICATION_MAN_INSTALL_DIR})
1049  endif()
1050  endif()
1051 
1052  # Desktop file
1053  set(${APPLICATION_NAME_CMAKE}_DESKTOP ${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.desktop)
1054  if (EXISTS ${${APPLICATION_NAME_CMAKE}_DESKTOP})
1055  message(STATUS "Found desktop file for ${APPLICATION_TARGET_NAME}")
1056  install(FILES ${${APPLICATION_NAME_CMAKE}_DESKTOP} DESTINATION ${CAMITK_APPLICATION_DESKTOP_INSTALL_DIR})
1057  endif()
1058 
1059  # application pixmap
1060  set(${APPLICATION_NAME_CMAKE}_PIXMAP ${CMAKE_CURRENT_SOURCE_DIR}/resources/camitk-${APPLICATION_NAME}.xpm)
1061  if (EXISTS ${${APPLICATION_NAME_CMAKE}_PIXMAP})
1062  message(STATUS "Found pixmap for ${APPLICATION_TARGET_NAME}")
1063  install(FILES ${${APPLICATION_NAME_CMAKE}_PIXMAP} DESTINATION ${CAMITK_APPLICATION_PIXMAP_INSTALL_DIR})
1064  endif()
1065 
1066  endif()
1067 
1068  endif() #APPLICATION_${APPLICATION_NAME_CMAKE}
1069 
1070 end(){)
A pseudo-namespace used to group CMake macros and functions.
string initial
Definition: renError.cpp:126
OUTFILE execute_process(COMMAND ${CMAKE_COMMAND}-E remove-f ${CAMITK_TEST_COMMAND_OUTPUT_FILE}) set(CAMITK_TEST_COMMAND_ARG"$
Definition: CamiTKTestCompareFile.h:15
get_directory_name()
macro get_directory_name set the variable VariableName to the name of the last directory of FullPathD...
Definition: GetDirectoryName.h:14
Definition: Action.cpp:40
parse_arguments()
macro parse_arguments is a fork from CMakeMacroParseArguments see http://www.cmake.org/Wiki/CMakeMacroParseArguments for more information
Definition: ParseArguments.h:13
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
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
map< unsigned int, unsigned int >::iterator it
Definition: pml2wrl.cpp:50
static void include(QRect &r, const QRect &rect)
Definition: canvas_typed/qtcanvas.cpp:98
camitk_application()
macro camitk_application simplify writing a CMakeLists.txt for CamiTK application extension ...
Definition: CamiTKApplication.h:57