mirror of
https://github.com/opencv/opencv.git
synced 2024-12-03 00:10:21 +08:00
84a290097b
Previous link dependency: imgcodecs --> zlib --> libpng this can generate imgcodecs shared lib, until Visual Studio integrated with vcpkg, which will additionally specify LIBPATH, pointing to vcpkg installed zlib (if any), which links the wrong zlib. Fixed link dependency: imgcodecs --> libpng --> zlib in this fixed case, symbols in zlib referenced in libpng will be found in the build-from-source static zlib, instead of the vcpkg one. related discussion: - https://github.com/microsoft/vcpkg/issues/16165 - https://github.com/opencv/opencv/issues/17051 - https://github.com/opencv/opencv/issues/10576 MSVC linking order reference pages: - https://docs.microsoft.com/en-us/cpp/build/reference/link-input-files?view=msvc-160 for link order - https://docs.microsoft.com/en-us/cpp/build/reference/linking?view=msvc-160 LIB environment variable, for library file searching - https://docs.microsoft.com/en-us/cpp/build/reference/libpath-additional-libpath?view=msvc-160 LIBPATH option, for library file searching
153 lines
4.5 KiB
CMake
153 lines
4.5 KiB
CMake
set(the_description "Image I/O")
|
|
ocv_add_module(imgcodecs opencv_imgproc WRAP java python)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# CMake file for imgcodecs. See root CMakeLists.txt
|
|
# Some parts taken from version of Hartmut Seichter, HIT Lab NZ.
|
|
# Jose Luis Blanco, 2008
|
|
# ----------------------------------------------------------------------------
|
|
|
|
ocv_clear_vars(GRFMT_LIBS)
|
|
|
|
if(HAVE_WINRT_CX AND NOT WINRT)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
|
|
endif()
|
|
|
|
if(HAVE_JPEG)
|
|
ocv_include_directories(${JPEG_INCLUDE_DIR} ${${JPEG_LIBRARY}_BINARY_DIR})
|
|
list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_WEBP)
|
|
add_definitions(-DHAVE_WEBP)
|
|
ocv_include_directories(${WEBP_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_PNG)
|
|
add_definitions(${PNG_DEFINITIONS})
|
|
ocv_include_directories(${PNG_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${PNG_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_GDCM)
|
|
ocv_include_directories(${GDCM_INCLUDE_DIRS})
|
|
list(APPEND GRFMT_LIBS ${GDCM_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_TIFF)
|
|
ocv_include_directories(${TIFF_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_JASPER)
|
|
ocv_include_directories(${JASPER_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES})
|
|
if(OPENCV_IO_FORCE_JASPER)
|
|
add_definitions(-DOPENCV_IMGCODECS_FORCE_JASPER=1)
|
|
endif()
|
|
endif()
|
|
|
|
if(HAVE_OPENEXR)
|
|
include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS})
|
|
list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR)
|
|
ocv_include_directories(${ZLIB_INCLUDE_DIRS})
|
|
list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_GDAL)
|
|
include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${GDAL_LIBRARY})
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_HDR)
|
|
add_definitions(-DHAVE_IMGCODEC_HDR)
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_SUNRASTER)
|
|
add_definitions(-DHAVE_IMGCODEC_SUNRASTER)
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_PXM)
|
|
add_definitions(-DHAVE_IMGCODEC_PXM)
|
|
endif()
|
|
|
|
file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp)
|
|
file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp)
|
|
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.cpp)
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.cpp)
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/exif.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/exif.cpp)
|
|
|
|
source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs})
|
|
|
|
set(imgcodecs_hdrs
|
|
${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.hpp
|
|
)
|
|
|
|
set(imgcodecs_srcs
|
|
${CMAKE_CURRENT_LIST_DIR}/src/loadsave.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp
|
|
)
|
|
|
|
file(GLOB imgcodecs_ext_hdrs
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h"
|
|
)
|
|
|
|
if(IOS)
|
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm)
|
|
list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework QuartzCore")
|
|
endif()
|
|
if(APPLE_FRAMEWORK)
|
|
list(APPEND IMGCODECS_LIBRARIES "-framework UIKit")
|
|
endif()
|
|
|
|
if(TRUE)
|
|
# these variables are set by 'ocv_append_build_options(IMGCODECS ...)'
|
|
foreach(P ${IMGCODECS_INCLUDE_DIRS})
|
|
ocv_include_directories(${P})
|
|
endforeach()
|
|
|
|
foreach(P ${IMGCODECS_LIBRARY_DIRS})
|
|
link_directories(${P})
|
|
endforeach()
|
|
endif()
|
|
|
|
source_group("Src" FILES ${imgcodecs_srcs} ${imgcodecs_hdrs})
|
|
source_group("Include" FILES ${imgcodecs_ext_hdrs})
|
|
ocv_set_module_sources(HEADERS ${imgcodecs_ext_hdrs} SOURCES ${imgcodecs_srcs} ${imgcodecs_hdrs} ${grfmt_srcs} ${grfmt_hdrs})
|
|
ocv_module_include_directories()
|
|
|
|
ocv_create_module(${GRFMT_LIBS} ${IMGCODECS_LIBRARIES})
|
|
|
|
macro(ocv_imgcodecs_configure_target)
|
|
if(APPLE)
|
|
add_apple_compiler_options(the_module)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG")
|
|
endif()
|
|
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations)
|
|
endmacro()
|
|
|
|
if(NOT BUILD_opencv_world)
|
|
ocv_imgcodecs_configure_target()
|
|
endif()
|
|
|
|
ocv_add_accuracy_tests()
|
|
if(TARGET opencv_test_imgcodecs AND HAVE_JASPER AND "$ENV{OPENCV_IO_ENABLE_JASPER}")
|
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_ENABLE_JASPER_TESTS=1)
|
|
endif()
|
|
ocv_add_perf_tests()
|