【问题标题】:How to point cmake at specific directory for library?如何将 cmake 指向库的特定目录?
【发布时间】:2011-08-11 16:19:20
【问题描述】:

我有一个使用库的 CMake 项目,现在我想使用该库的不同版本来测试我的代码。我可以在下面的示例中设置 INCLUDE_DIRECTORIES (并且可能稍后还链接)。但是因为我只想暂时做这个,所以我想用 ccmake/cmake-gui 手动设置这个路径。

我该怎么做?

project(min_example)
cmake_minimum_required(VERSION 2.8)

find_package(OpenCV REQUIRED)
# Without the following line please:
INCLUDE_DIRECTORIES("/home/me/src/opencv/install/include")
add_executable(min_example main.cpp)
target_link_libraries(min_example ${OpenCV_LIBS})

【问题讨论】:

    标签: cmake


    【解决方案1】:

    这应该可以通过在配置构建时设置CMAKE_PREFIX_PATH 变量来实现。在您的项目目录中生成一个test_build 目录并运行:

    mkdir test_build
    cd test_build
    cmake -DCMAKE_PREFIX_PATH=/home/me/src/opencv/install ..
    

    设置CMAKE_PREFIX_PATH 变量将使find_package(OpenCV REQUIRED) 命令在/home/me/src/opencv 中选择您的OpenCV 安装并相应地设置OpenCV_LIBSOpenCV_INCLUDE_DIR 变量。

    或者,您可以使用 CMake GUI 编辑器编辑现有构建目录的 CMakeCache.txt 文件,并在其中添加 CMAKE_PREFIX_PATH 定义。然后你必须重新配置你的项目。

    【讨论】:

    • 它不起作用。 find_package(OpenCV) 仍然会在 /usr/local/... 中获取 libs+include。我使用了上面给出的三行代码。知道我还能尝试什么吗?
    • @Unapiedra 将 CMAKE_PREFIX_PATH 设置为您家中包含 OpenCVConfig.cmake 文件的目录(可能是 /home/me/src/opencv/install)。
    • 谢谢。它实际上是.../install/share/OpenCV,但它做到了!
    • 如何在 cmake_prefix_path 上列出多个目录?
    • @AndrewHundt 将其设置为 CMake 列表,即 cmake -D "CMAKE_PREFIX_PATH=/a/b/;/c/d"
    【解决方案2】:

    在 find_package 中使用 config 会将搜索路径限制为 OpenCV_DIR。这将使用 opencv 在构建时生成的 cmake 配置来设置包含和库的路径

    set(OpenCV_DIR "<cusompath>" CACHE PATH '' ${SHOULD_FORCE_CACHE})
    find_package(OpenCV REQUIRED CONFIG)
    

    【讨论】:

    • 这两种方法似乎都有效,但 xxx_DIR 变量实际上不是仅用于内部吗?
    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2016-07-21
    • 2013-05-19
    • 1970-01-01
    • 2023-03-21
    • 2015-05-08
    • 1970-01-01
    相关资源
    最近更新 更多