【问题标题】:Tell cmake take another version of the package告诉 cmake 使用另一个版本的包
【发布时间】:2015-07-27 11:52:44
【问题描述】:

我通过 Homebrew 安装了 OpenCV 和 OpenCV3。

OpenCV 已链接,可通过 cmake 访问

/usr/local/share/OpenCV

OpenCV3 未链接,位于此处

/usr/local/Cellar/opencv3/3.0.0

我有这个CMakeLists.txt 文件:

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

当我运行cmake 时,它使用的是 OpenCV 的第一个版本。 如何告诉cmake 使用第二个包?

更新:

我试图指定

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/usr/local/Cellar/opencv3/3.0.0/share/OpenCV")
find_package( OpenCV REQUIRED )

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "/usr/local/Cellar/opencv3/3.0.0/share/")
find_package( OpenCV REQUIRED )

但是在CMakeCache.txt我还是看到了这个:

OpenCV_CONFIG_PATH:FILEPATH=/usr/local/share/OpenCV

这又不是我需要的..

谢谢。

【问题讨论】:

  • CMAKE_MODULE_PATH 指定cmake脚本的路径,用于查找包。您应该设置 OpenCV 相关的变量,而不是设置此变量。 FindOpenCV.cmake 中描述的唯一设置变量是 OpenCV_DIR。尝试将其设置为/usr/local/Cellar/opencv3/3.0.0
  • @Tsyvarev 我没有FindOpenCV.cmake 文件。它在您的文件系统中的什么位置?
  • 无需修改该文件,只需在 CMakeLists.txt 文件中设置变量,就像您尝试使用 CMAKE_MODULE_PATH 一样。

标签: macos cmake homebrew


【解决方案1】:

有几个选项。

选项 1

用途:

CMAKE_PREFIX_PATH=/usr/local/Cellar/opencv3  cmake ...

选项 2

替换

find_package( OpenCV REQUIRED )

find_package(OpenCV HINTS /usr/local/opt/opencv3 /usr/local/Cellar/opencv3 REQUIRED)

【讨论】:

    【解决方案2】:

    尝试解开opencv并链接opencv3:

    > readlink /usr/local/share/OpenCV
      ../Cellar/opencv/2.4.11_2/share/OpenCV
    > brew unlink opencv
    > brew link opencv3 --force
    > readlink /usr/local/share/OpenCV
      ../Cellar/opencv3/3.0.0/share/OpenCV
    

    否则,您可能需要为 CMake 设置适当的变量:http://www.cmake.org/Wiki/CMake_Useful_Variables

    【讨论】:

    • 是的,我试过了,它有效。但我想在不取消链接/链接的情况下实现这一目标..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多