c++ - 使用 CMAKE 将包查找到开发库

标签 c++ opencv cmake

我确定这是一个完全 cmake 菜鸟问题。

我正在从事一个 OpenCV 项目,并希望使用最新的测试版测试一些东西。如何指定 beta 库而不将它们安装到我的系统上?我的beta opencv已经成功内置:

/Users/paul/hacking/robotics/opencv/build/lib/

我目前的 cmake 基本上是从 opencv 示例中提取出来的,看起来像这样:

    # cmake for Stereo Vision App
# your opencv/build directory should be in your system PATH

# set minimum required version for cmake
cmake_minimum_required(VERSION 2.8)

# define the project name
set(project_name "Stereo")

# set the project namee
project("${project_name}")

# add opencv package to the project
find_package( OpenCV REQUIRED )
MESSAGE("OpenCV version : ${OpenCV_VERSION}")

# add opencv include directories to the project
include_directories( ${OpenCV_INCLUDE_DIRS} ) 
# add include directory
include_directories (${Stereo_SOURCE_DIR}) 

# add library
add_library( CameraCalibrator CameraCalibrator.cpp)

# add executable
#add_executable( videoprocessing videoprocessing.cpp)
#add_executable( tracking tracking.cpp)
#add_executable( foreground foreground.cpp)
add_executable( calibrate calibrate.cpp)
add_executable( rightsideup rightsideup.cpp)
add_executable( live live.cpp)
add_executable( live2 live2.cpp)
add_executable( stereo-tune stereo-tune.cpp)
add_executable( project project.cpp)
add_executable( stereo_calibrate stereo_calibrate.cpp)
add_executable( capture_two_camera_chessboards capture_two_camera_chessboards.cpp)
add_executable( capture_stereo_chessboards capture_stereo_chessboards.cpp)

# link libraries
#target_link_libraries( videoprocessing ${OpenCV_LIBS})
#target_link_libraries( tracking ${OpenCV_LIBS})
#target_link_libraries( foreground ${OpenCV_LIBS})
target_link_libraries( rightsideup ${OpenCV_LIBS})
target_link_libraries( live ${OpenCV_LIBS})
target_link_libraries( live2 ${OpenCV_LIBS})
target_link_libraries( stereo-tune ${OpenCV_LIBS})
target_link_libraries( project ${OpenCV_LIBS})
target_link_libraries( stereo_calibrate ${OpenCV_LIBS})
target_link_libraries( capture_two_camera_chessboards ${OpenCV_LIBS})
target_link_libraries( capture_stereo_chessboards ${OpenCV_LIBS})
target_link_libraries( calibrate ${OpenCV_LIBS} CameraCalibrator)

我试过使用 link_libraries 并将查找包行上的版本设置为 3.0,但它总是找到系统安装的库 2.4.10

编辑 1:

cmake -DPCL_DIR:PATH="../../pcl/build" -DOpenCV_DIR:PATH="../../opencv/build" ..

由于某种原因不适合我。同样,当我尝试在 CMake 脚本中设置这些变量时,它也不起作用。

set(PCL_DIR "../../pcl/build" CACHE PATH "")
set(OpenCV_DIR "../../opencv/build" CACHE PATH "")

非常感谢! 保罗

最佳答案

您正朝着正确的方向前进。 cmake 的 Find 脚本首先在标准系统路径中查找,除非另有说明。每个 FIND 脚本都有自己的一组 cmake 变量,您可以设置这些变量来改变行为。

对于 FindOpenCV.cmake,它似乎是 OPENCV_BASE_DIR。

这是一些源代码的链接:

https://github.com/rpavlik/cmake-modules/blob/master/FindOpenCV.cmake

关于c++ - 使用 CMAKE 将包查找到开发库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579533/

相关文章:

python - 在对象中查找矩形的轮廓

opencv - 如何互动并从相机获取直播

cmake 找不到所需的包 TIFF

cmake - Clion/Cmake 和 Eigen 错误

c++ - 具有相同简单改编结构属性的 boost::spirit::qi 规则会产生编译错误

C++ boost replace_all 引用

c++ - 如何在 C++ 中通过 BOOST_FOREACH 使我的类可迭代?

c++ - std::sort 是否实现快速排序?

c# - 使用CVInvoke.AbsDiff方法从 mask 中检测椭圆

c++ - 如何使用 cmake 创建在共享库中定义但在其他目标中声明的外部方法?