强制 cmake 使用特定的 OpenCV 版本
Forcing cmake to use a specific OpenCV version
我的 Ubuntu 14.04 默认安装了 OpenCV 2.4.8,我也有一个 cv::fisheye
类 需要的手工构建的 OpenCV 2.4.11,它我用 cmake
构建来生成我的可执行文件。问题是我正在使用 ROS,它也默认为 2.4.8,但我需要 link 与 2.4.11。我的技巧是:
find_package(OpenCV REQUIRED)
# Needed to force OpenCV 2.4 to link with 2.4.11
#message("Initial value for ${OpenCV_VERSION}: ${OpenCV_LIBS}")
if(OpenCV_VERSION VERSION_LESS "3.0")
set(OpenCV_VERSIONED_LIBS "")
macro(set_opencv_version version)
foreach( LIB_FILE ${ARGN} )
set(OpenCV_VERSIONED_LIBS ${OpenCV_VERSIONED_LIBS} :lib${LIB_FILE}.so.${version})
endforeach()
endmacro()
set_opencv_version("2.4.11" ${OpenCV_LIBS})
else()
set(OpenCV_VERSIONED_LIBS ${OpenCV_LIBS})
endif()
#message("Updated value: ${OpenCV_VERSIONED_LIBS}")
target_link_libraries(my_fisheye_application
${OpenCV_VERSIONED_LIBS}
${catkin_LIBRARIES}
cv_bridge # This by default pulls in OpenCV 2.4.8 libraries
# ...etc...
)
由于这个脚本需要在不同的机器上工作,并且需要使用 OpenCV 3.0 和 2.4.11,所以我不能对正在使用的目录做出任何假设。有更好的方法吗?
如果您想强制 CMake(FindOpenCV 模块)搜索不同于 package/system 安装的 OpenCV 库,
您需要将 OpenCV_ROOT_DIR
变量设置为要使用的 OpenCV 树的基目录。
另外,因为你至少需要一个特定的OpenCV库的最低版本,所以最好在find_package()函数中说明,如下:
find_package(OpenCV 2.4.11 REQUIRED)
我的 Ubuntu 14.04 默认安装了 OpenCV 2.4.8,我也有一个 cv::fisheye
类 需要的手工构建的 OpenCV 2.4.11,它我用 cmake
构建来生成我的可执行文件。问题是我正在使用 ROS,它也默认为 2.4.8,但我需要 link 与 2.4.11。我的技巧是:
find_package(OpenCV REQUIRED)
# Needed to force OpenCV 2.4 to link with 2.4.11
#message("Initial value for ${OpenCV_VERSION}: ${OpenCV_LIBS}")
if(OpenCV_VERSION VERSION_LESS "3.0")
set(OpenCV_VERSIONED_LIBS "")
macro(set_opencv_version version)
foreach( LIB_FILE ${ARGN} )
set(OpenCV_VERSIONED_LIBS ${OpenCV_VERSIONED_LIBS} :lib${LIB_FILE}.so.${version})
endforeach()
endmacro()
set_opencv_version("2.4.11" ${OpenCV_LIBS})
else()
set(OpenCV_VERSIONED_LIBS ${OpenCV_LIBS})
endif()
#message("Updated value: ${OpenCV_VERSIONED_LIBS}")
target_link_libraries(my_fisheye_application
${OpenCV_VERSIONED_LIBS}
${catkin_LIBRARIES}
cv_bridge # This by default pulls in OpenCV 2.4.8 libraries
# ...etc...
)
由于这个脚本需要在不同的机器上工作,并且需要使用 OpenCV 3.0 和 2.4.11,所以我不能对正在使用的目录做出任何假设。有更好的方法吗?
如果您想强制 CMake(FindOpenCV 模块)搜索不同于 package/system 安装的 OpenCV 库,
您需要将 OpenCV_ROOT_DIR
变量设置为要使用的 OpenCV 树的基目录。
另外,因为你至少需要一个特定的OpenCV库的最低版本,所以最好在find_package()函数中说明,如下:
find_package(OpenCV 2.4.11 REQUIRED)