命令行相当于cmake的find_package?

Pho*_*non 11 cmake

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

wfr*_*wfr 19

1. find_package的作用:

find_package()文档:

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

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

ls /usr/share/cmake*/Modules/Find*.cmake
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 如果您想知道 -DMODE=EXIST 在哪里找到已安装的模块,请将“-DCMAKE_FIND_DEBUG_MODE=ON”附加到命令中。 (3认同)
  • 根据`man cmake`,这“不应该在新项目中使用”。但是你可以使用类似`pkg-config aruco --modversion` (2认同)