]> rtime.felk.cvut.cz Git - opencv.git/blob - opencv/src/highgui/CMakeLists.txt
07710c23bae96e3a2eeca7184bbbf2bbb0d912ad
[opencv.git] / opencv / src / highgui / CMakeLists.txt
1 # ----------------------------------------------------------------------------
2 #  CMake file for highgui. See root CMakeLists.txt
3 #   Some parts taken from version of Hartmut Seichter, HIT Lab NZ.
4 #   Jose Luis Blanco, 2008
5 # ----------------------------------------------------------------------------
6 project(highgui)
7
8 if(WITH_JPEG)
9         add_definitions(-DHAVE_JPEG)
10         if(NOT JPEG_FOUND)
11                 set(use_3rdparty TRUE)
12         endif()
13 endif()
14
15 if(WITH_PNG)
16         add_definitions(-DHAVE_PNG)
17         if(NOT PNG_FOUND)
18                 set(use_3rdparty TRUE)
19         endif()
20 endif()
21
22 if(WITH_TIFF)
23         add_definitions(-DHAVE_TIFF)
24         if(NOT TIFF_FOUND)
25                 set(use_3rdparty TRUE)
26         endif()
27 endif()
28
29 if(WITH_JASPER)
30         add_definitions(-DHAVE_JASPER)
31         if(NOT JASPER_FOUND)
32                 set(use_3rdparty TRUE)
33         endif()
34 endif()
35
36 if(use_3rdparty)
37     include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../3rdparty/include")
38 endif()
39
40 if(MSVC)
41     set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /NODEFAULTLIB:libcmt.lib")
42 endif()
43
44 file(GLOB grfmt_hdrs grfmt*.h)
45 file(GLOB grfmt_srcs grfmt*.cpp)
46 set(grfmt_hdrs bitstrm.h ${grfmt_hdrs})
47 set(grfmt_srcs bitstrm.cpp ${grfmt_srcs})
48
49 source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs})
50
51 set(highgui_srcs
52     cvcap.cpp
53     cvcap_images.cpp
54     image.cpp
55     loadsave.cpp
56     precomp.cpp
57     utils.cpp
58     window.cpp
59     )
60
61 set(highgui_hdrs _highgui.h utils.h)
62
63 set(lib_hdr_names highgui.h highgui.hpp)
64 set(highgui_ext_hdrs)
65 foreach(h ${lib_hdr_names})
66     list(APPEND highgui_ext_hdrs "${CMAKE_CURRENT_SOURCE_DIR}/../../include/opencv/${h}")
67 endforeach()
68
69 if(WIN32)
70     set(highgui_srcs ${highgui_srcs} window_w32.cpp cvcap_vfw.cpp cvcap_cmu.cpp cvcap_w32.cpp cvcap_dshow.cpp)
71     if(HAVE_MIL)
72         set(highgui_srcs ${highgui_srcs} cvcap_mil.cpp)
73     endif()
74 endif()
75
76 if(UNIX)
77     if(HAVE_GTK)
78         set(highgui_srcs ${highgui_srcs} window_gtk.cpp)
79     endif()
80
81     if(HAVE_XINE)
82         set(highgui_srcs ${highgui_srcs} cvcap_xine.cpp)
83     endif()
84
85     if(HAVE_DC1394_2)
86         set(highgui_srcs ${highgui_srcs} cvcap_dc1394_v2.cpp)
87     endif()
88
89     if(HAVE_DC1394)
90         set(highgui_srcs ${highgui_srcs} cvcap_dc1394.cpp)
91     endif()
92
93     if(HAVE_FFMPEG)
94         set(highgui_srcs ${highgui_srcs} cvcap_ffmpeg.cpp)
95         if(BZIP2_LIBRARIES)
96             set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${BZIP2_LIBRARIES})
97         endif()
98     endif()
99     
100     if(HAVE_PVAPI)
101         add_definitions(-DHAVE_PVAPI)
102         set(highgui_srcs cvcap_pvapi.cpp ${highgui_srcs})
103         set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} PvAPI)
104     endif()
105
106     if(HAVE_GSTREAMER)
107         set(highgui_srcs ${highgui_srcs} cvcap_gstreamer.cpp)
108         if(NOT HAVE_GSTREAMER_APP)
109             set(highgui_srcs ${highgui_srcs} gstappsink.cpp)
110             set(highgui_hdrs ${highgui_hdrs} gstappsink.h)
111         endif()
112     endif()
113
114     if(HAVE_UNICAP)
115         set(highgui_srcs ${highgui_srcs} cvcap_unicap.cpp)
116     endif()
117
118         if(HAVE_LIBV4L)
119                 set(highgui_srcs ${highgui_srcs} cvcap_libv4l.cpp)
120         else()
121                 set(highgui_srcs ${highgui_srcs} cvcap_v4l.cpp)
122         endif()
123
124         if(JPEG_FOUND)
125                 include_directories(${JPEG_INCLUDE_DIR})
126         endif()
127     if(PNG_FOUND)
128                 add_definitions(${PNG_DEFINITIONS})
129                 include_directories(${PNG_INCLUDE_DIR})
130         endif()
131         if(TIFF_FOUND)
132                 include_directories(${TIFF_INCLUDE_DIR})
133         endif()
134         if(JASPER_FOUND)
135                 include_directories(${JASPER_INCLUDE_DIR})
136         endif()
137
138     foreach(P ${HIGHGUI_INCLUDE_DIRS})
139         include_directories(${P})
140     endforeach()
141
142     foreach(P ${HIGHGUI_LIBRARY_DIRS})
143         link_directories(${P})
144     endforeach()
145 endif()
146
147 if(APPLE)
148     add_definitions(-DHAVE_QUICKTIME=1 -DHAVE_COCOA=1)
149     if(NOT OPENCV_BUILD_3RDPARTY_LIBS)
150         add_definitions(-DHAVE_IMAGEIO=1)
151     endif()
152     set(highgui_srcs ${highgui_srcs} window_cocoa.mm cvcap_qt.mm)
153 endif(APPLE)
154
155 source_group("Src" FILES ${highgui_srcs} ${highgui_hdrs})
156 source_group("Include" FILES ${highgui_ext_hdrs})
157
158 if(OPENCV_BUILD_3RDPARTY_LIBS)
159     if(WIN32)
160         link_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../3rdparty/lib")
161     endif()
162     link_directories(
163         "${CMAKE_BINARY_DIR}/3rdparty/lib"
164         "${CMAKE_BINARY_DIR}/3rdparty/lib/${ConfigurationName}"
165         )
166 endif()
167
168 set(lib_srcs ${highgui_srcs} ${grfmt_srcs})
169
170 # ----------------------------------------------------------------------------------
171 #                               Define the library target:
172 # ----------------------------------------------------------------------------------
173 set(the_target "highgui")
174
175 add_definitions(-DHIGHGUI_EXPORTS -DCVAPI_EXPORTS)
176
177 include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../include/opencv"
178                     "${CMAKE_CURRENT_SOURCE_DIR}"
179                     "${CMAKE_CURRENT_BINARY_DIR}")
180
181 add_library(${the_target} ${lib_srcs} ${highgui_hdrs} ${grfmt_hdrs} ${highgui_ext_hdrs})
182
183 if(PCHSupport_FOUND)
184     set(pch_header ${CMAKE_CURRENT_SOURCE_DIR}/_highgui.h)
185     if(${CMAKE_GENERATOR} MATCHES "Visual*" OR ${CMAKE_GENERATOR} MATCHES "Xcode*")
186         if(${CMAKE_GENERATOR} MATCHES "Visual*")
187             set(${the_target}_pch "precomp.cpp")
188         endif()            
189         add_native_precompiled_header(${the_target} ${pch_header})
190     elseif(CMAKE_COMPILER_IS_GNUCXX AND ${CMAKE_GENERATOR} MATCHES ".*Makefiles")
191         add_precompiled_header(${the_target} ${pch_header})
192     endif()
193 endif()
194
195 # For dynamic link numbering convenions
196 set_target_properties(${the_target} PROPERTIES
197     VERSION ${OPENCV_VERSION}
198     SOVERSION ${OPENCV_SOVERSION}
199     OUTPUT_NAME "${the_target}${OPENCV_DLLVERSION}"
200     )
201
202 # Additional target properties
203 set_target_properties(${the_target} PROPERTIES
204         DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}"
205         ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib/"
206         RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/"
207         LINK_INTERFACE_LIBRARIES ""
208         )
209
210 if(MSVC)
211         set_target_properties(${the_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib")
212 endif(MSVC)
213
214 # Dependencies of this target:
215 add_dependencies(${the_target} cv cxcore)
216
217 # Add the required libraries for linking:
218 target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} cxcore cv ${JPEG_LIBRARIES} ${PNG_LIBRARIES} ${TIFF_LIBRARIES} ${JASPER_LIBRARIES} ${HIGHGUI_LIBRARIES})
219
220 if(WITH_JASPER AND NOT JASPER_FOUND)
221         add_dependencies(${the_target} libjasper)
222         target_link_libraries(${the_target} libjasper)
223 endif()
224
225 if(WITH_JPEG AND NOT JPEG_FOUND)
226         add_dependencies(${the_target} libjpeg)
227         target_link_libraries(${the_target} libjpeg)
228 endif()
229
230 if(WITH_PNG AND NOT PNG_FOUND)
231         add_dependencies(${the_target} libpng zlib)
232         target_link_libraries(${the_target} libpng zlib)
233 endif()
234
235 if(WITH_TIFF AND NOT TIFF_FOUND)
236         add_dependencies(${the_target} libtiff)
237         target_link_libraries(${the_target} libtiff)
238 endif()
239
240 #if(OPENCV_BUILD_3RDPARTY_LIBS)
241 #       add_dependencies(${the_target} libjasper libjpeg libpng libtiff zlib)
242 #       target_link_libraries(${the_target} libjasper libjpeg libpng libtiff zlib)
243 #endif()
244 if(WIN32)
245         target_link_libraries(${the_target} comctl32 gdi32 ole32)
246         
247         if (MSVC)
248                 target_link_libraries(${the_target} vfw32)
249         endif()
250
251         if(MINGW)
252                 if(MINGW64)
253                         target_link_libraries(${the_target} msvfw32 avifil32 avicap32 winmm videoInput64 strmiids)
254                 else()
255                         target_link_libraries(${the_target} vfw32 winmm videoInput strmiids)
256                 endif()  
257     endif()
258 endif()
259
260 if(APPLE)
261         target_link_libraries(${the_target} "-framework QTKit -lbz2 -framework Cocoa -framework CoreFoundation -framework QuartzCore")
262 endif()
263
264 install(TARGETS ${the_target}
265         RUNTIME DESTINATION bin COMPONENT main
266         LIBRARY DESTINATION lib COMPONENT main
267         ARCHIVE DESTINATION lib COMPONENT main)
268
269 install(FILES ${highgui_ext_hdrs}
270         DESTINATION include/opencv
271         COMPONENT main)