【问题标题】:Command line equivalent of cmake's find_package?命令行等效于 cmake 的 find_package?
【发布时间】:2015-03-04 19:38:49
【问题描述】:

我正在调试一个找不到某些包的 cmake 文件(使用 find_package())。 find_package() 在搜索包时实际上做了什么,我可以通过命令行调用来模拟它(不调用 cmake)吗?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    1. find_package 的作用:

    来自documentation of find_package()

    CMake 在 CMAKE_MODULE_PATH 中搜索名为 Find.cmake 的文件,然后安装 CMake。如果找到该文件,则由 CMake 读取和处理。

    在 Linux 上,默认脚本通常位于此处:

    ls /usr/share/cmake*/Modules/Find*.cmake
    

    2。如何在命令行中使用 find_package:

    # cmake --find-package -DNAME=Boost -DCOMPILER_ID=GNU -DLANGUAGE=C -DMODE=EXIST
    Boost found
    
    # cmake --find-package -DNAME=Boost -DCOMPILER_ID=GNU -DLANGUAGE=C -DMODE=COMPILE
    -I/usr/include
    
    # cmake --find-package -DNAME=Boost -DCOMPILER_ID=GNU -DLANGUAGE=C -DMODE=LINK
       -rdynamic
    

    【讨论】:

    • 根据man cmake,这个“不应该在新项目中使用”。但是你可以使用类似pkg-config aruco --modversion
    • 如果您想知道 -DMODE=EXIST 在哪里找到已安装的模块,请将“-DCMAKE_FIND_DEBUG_MODE=ON”附加到命令中。
    猜你喜欢
    • 2016-01-26
    • 2016-10-02
    • 2012-02-24
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多