]> Creatis software - clitk.git/blob - vv/CMakeLists.txt
compile all tools
[clitk.git] / vv / CMakeLists.txt
1 cmake_minimum_required(VERSION 2.4)
2
3 #=========================================================
4 # To avoid warning with some version
5 if(COMMAND cmake_policy)
6   cmake_policy(SET CMP0003 NEW)
7 endif(COMMAND cmake_policy)
8 #=========================================================
9
10 #=========================================================
11 #List of vv tools to compile
12 SET(vv_TOOLS
13   vvToolMedianFilter
14   vvToolRigidReg ## Very long to compile
15   vvToolCropImage
16   vvToolBinarize
17   vvToolImageArithm
18   vvToolResample
19   vvToolExtractPatient
20   vvToolExtractLung
21   vvToolConvert ## with dummy vvToolConvert.ui
22   
23   ## these ones are for tests (not working)
24   # vvToolFoo
25   # vvToolFooWithWidgetBase
26   # vvToolPlastimatch
27   # vvToolConnectedComponentLabeling  
28 )
29 # dependencies of the tools
30 # Future issues : when tool depend on other tools ... how to manage that ?
31 SET(vvToolRigidReg_LIBS clitkAffineRegistrationLib clitkRegistrationGgoLib)
32 SET(vvToolBinarize_LIBS clitkBinarizeImageLib)
33 SET(vvToolResample_LIBS clitkImageResampleLib)
34 SET(vvToolConvert_LIBS clitkImageConvertLib)
35 SET(vvToolExtractPatient_LIBS clitkSegmentationGgoLib)
36 SET(vvToolExtractLung_LIBS clitkSegmentationGgoLib)
37 SET(vvToolCropImage_LIBS clitkToolsGgoLib)
38
39 #=========================================================
40 # List of vv source files
41
42 # in COMMON_WITH_UI -> must have .h and .cxx and .ui
43 SET(vv_COMMON_WITH_UI
44   vvInfoPanel
45   vvMainWindow 
46   vvLinkPanel 
47   vvOverlayPanel 
48   vvLandmarksPanel 
49   vvProgressDialog 
50   vvSegmentationDialog
51   vvSurfaceViewerDialog
52   vvDeformationDialog
53   vvStructSelector
54   vvIntensityValueSlider
55   vvLabelImageLoaderWidget
56   vvToolWidgetBase  
57   vvToolSimpleInputSelectorWidget
58   vvToolInputSelectorWidget
59   vvToolStructureSetManager
60 )
61
62 # All others sources
63 SET(vv_SRCS
64   vvQProgressDialogITKCommand.cxx
65   vvQDicomSeriesSelector.cxx
66   QTreePushButton.cxx
67   vvMainWindowBase.cxx
68   vvImageWarp.cxx
69   vvDeformableRegistration.cxx
70   vtkVOXImageWriter.cxx
71   vvInteractorStyleNavigator.cxx
72   vvSlicer.cxx
73   vvImageReader.cxx
74   vvImageReader.txx
75   vvImageWriter.cxx
76   vvImageWriter.txx
77   vvLandmarks.cxx
78   vvLandmarksGlyph.cxx
79   vvGlyphSource.cxx
80   vvGlyph2D.cxx
81   vvSlicerManager.cxx
82   vvSlicerManagerCommand.cxx
83   vvUtils.cxx
84   vvMaximumIntensityProjection.cxx
85   vvMesh.cxx
86   vvMeshActor.cxx
87   vvMeshReader.cxx
88   vvMidPosition.cxx
89   vvImageMapToWLColors.cxx
90   vvThreadedFilter.cxx
91   vvImageContour.cxx
92   vvBinaryImageOverlayActor.cxx
93   vvStructureSetActor.cxx
94   vvROIActor.cxx
95   vvBlendImageActor.cxx
96   vvToolManager.cxx
97   vvToolCreatorBase.cxx
98 )
99
100 #=========================================================
101 # Qt related commands
102 FIND_PACKAGE(Qt4 REQUIRED)
103
104 QT4_WRAP_CPP(vv_SRCS 
105   vvMainWindowBase.h 
106   QTreePushButton.h 
107   vvDocumentation.h  
108   vvHelpDialog.h  
109   vvQDicomSeriesSelector.h 
110   vvSlicerManager.h
111   vvThreadedFilter.h
112   vvStructureSetActor.h
113   vvROIActor.h
114   vvToolCreatorBase.h
115   )
116
117 QT4_WRAP_UI(vv_UI_CXX 
118   qt_ui/vvHelpDialog.ui 
119   qt_ui/vvDocumentation.ui 
120   qt_ui/vvDicomSeriesSelector.ui 
121   qt_ui/vvDummyWindow.ui #For testing
122   )
123
124 QT4_ADD_RESOURCES(vv_SRCS vvIcons.qrc)
125
126 #Add the autotools and the common files ui
127 foreach(tool ${vv_TOOLS} ${vv_COMMON_WITH_UI})
128     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
129     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
130     QT4_WRAP_UI(vv_UI_CXX qt_ui/${tool}.ui)
131 endforeach(tool)
132
133 #Add the common source files
134 foreach(tool ${vv_COMMON})
135     SET(vv_SRCS ${vv_SRCS} ${tool}.cxx)
136     QT4_WRAP_CPP(vv_SRCS ${tool}.h)
137 endforeach(tool)
138
139 # if Windows and Qt was built as a static lib then don't set QT_DLL flag
140 SET(QT_STATIC 0)
141 IF (WIN32)
142   IF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
143     FILE(READ ${QT_LIBRARY_DIR}/QtCore.prl QT_CORE_PRL)
144     IF(${QT_CORE_PRL} MATCHES "static")
145       SET(QT_STATIC 1)
146     ENDIF(${QT_CORE_PRL} MATCHES "static")
147   ENDIF(EXISTS ${QT_LIBRARY_DIR}/QtCore.prl)
148 ENDIF(WIN32)
149 IF(NOT QT_STATIC)
150   ADD_DEFINITIONS(-DQT_DLL)
151 ENDIF(NOT QT_STATIC)
152
153 ADD_DEFINITIONS(-DQT_THREAD_SUPPORT)
154
155 INCLUDE_DIRECTORIES(
156   ${QT_INCLUDES}
157   ${QT_INCLUDE_DIR}
158   ${QT_QTGUI_INCLUDE_DIR}
159   ${QT_QTCORE_INCLUDE_DIR}
160   ${CMAKE_CURRENT_BINARY_DIR}
161   ${CMAKE_CURRENT_SOURCE_DIR}
162 )
163 #=========================================================
164
165 #=========================================================
166 #support for parallel deformable registration with OpenMP
167 IF(NOT __APPLE__)
168 IF(CMAKE_COMPILER_IS_GNUCC)
169   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
170 ENDIF(CMAKE_COMPILER_IS_GNUCC)
171 ENDIF(NOT __APPLE__)
172 #=========================================================
173
174 #=========================================================
175 INCLUDE_DIRECTORIES(
176   ../common
177   ../tools
178   ../segmentation
179   )
180
181 IF(WIN32)
182   SET(EXE_ICON vvIcon.rc)
183 ENDIF(WIN32)
184
185 LINK_DIRECTORIES(${QT_INCLUDES})
186 ADD_EXECUTABLE(vv ${vv_SRCS} vv.cxx ${vv_UI_CXX} ${EXE_ICON})
187 ADD_DEPENDENCIES(vv clitkToolsGgoLib clitkSegmentationGgoLib)
188 TARGET_LINK_LIBRARIES(vv clitkDicomRTStruct)
189
190 #=========================================================
191 #Add each tool's dependencies
192 foreach(tool ${vv_TOOLS})
193     target_link_libraries(vv ${${tool}_LIBS})
194 endforeach(tool)
195
196 #=========================================================
197 #Add Foundation Libraries (this should be after our libraries, since we depend
198 #on them)
199 TARGET_LINK_LIBRARIES(vv
200 clitkCommon ${ITK_LIBRARIES} QVTK vtkHybrid)
201
202 #=========================================================
203 # Install options (also used by CPack)
204 IF(UNIX AND NOT APPLE)
205   INSTALL (FILES ${EXECUTABLE_OUTPUT_PATH}/vv DESTINATION . PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE)
206   INSTALL (FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
207
208   #QT
209   #FOREACH(LIB QtCore QtGui QtOpenGL QtNetwork QtSql)
210   #  INSTALL(FILES "${QT_LIBRARY_DIR}/lib${LIB}.so.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH}"
211   #          RENAME "lib${LIB}.so.${QT_VERSION_MAJOR}"
212   #          DESTINATION .)
213   #ENDFOREACH(LIB)
214 ENDIF(UNIX AND NOT APPLE)
215
216 IF(WIN32)
217   #INCLUDE(InstallRequiredSystemLibraries)
218   INSTALL(FILES ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/vv.exe DESTINATION .)
219   #INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/icons/ducky.png DESTINATION .)
220 ENDIF(WIN32)
221 #=========================================================
222
223 #=========================================================
224 # CPack options
225 SET(CPACK_PACKAGE_NAME "vv")
226 SET(CPACK_SOURCE_PACKAGE_FILE_NAME "vv-src")
227 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "vv, the 4D slicer : let's jump into a new dimension !")
228 SET(CPACK_PACKAGE_VENDOR "Creatis-CLB")
229 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReadMe.txt")
230 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License.txt")
231 SET(CPACK_PACKAGE_VERSION_MAJOR "1")
232 SET(CPACK_PACKAGE_VERSION_MINOR "1")
233 SET(CPACK_PACKAGE_VERSION_PATCH "0")
234 SET(CPACK_PACKAGE_INSTALL_DIRECTORY "vv")
235
236 IF(WIN32)
237   # There is a bug in NSI that does not handle full unix paths properly. Make
238   # sure there is at least one set of four (4) backlasshes.
239   SET(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}\\\\icons\\\\ducky.ico")
240   SET(CPACK_NSIS_INSTALLED_ICON_NAME "${CMAKE_BUILD_TYPE}\\\\vv.exe")
241   SET(CPACK_NSIS_DISPLAY_NAME "vv - The 4D slicer")
242   SET(CPACK_NSIS_HELP_LINK "http://www.creatis.insa-lyon.fr/rio/vv")
243   SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.creatis.insa-lyon.fr/rio")
244   SET(CPACK_NSIS_CONTACT "vv@creatis.insa-lyon.fr")
245   SET(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \\\"$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\vv.lnk\\\" \\\"$INSTDIR\\\\vv.exe\\\" ")
246   SET(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \\\"$SMPROGRAMS\\\\$MUI_TEMP\\\\vv.lnk\\\" ")
247   #SET(CPACK_NSIS_MODIFY_PATH ON) SR: buggy, wait for cmake updates for a fix
248   #SET(CPACK_BINARY_ZIP ON)
249 ELSE(WIN32)
250   SET(CPACK_GENERATOR "STGZ")
251   SET(CPACK_SOURCE_GENERATOR "TGZ") 
252 ENDIF(WIN32)
253 INCLUDE(CPack)
254 #=========================================================