相关疑难解决方法(0)

CMake:如果你需要指定CMAKE_MODULE_PATH,find_package()的用途是什么?

我正在尝试使用CMake实现跨平台构建系统.现在该软件有一些依赖性.我自己编译并将它们安装在我的系统上.

安装的一些示例文件:

-- Installing: /usr/local/share/SomeLib/SomeDir/somefile
-- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile
-- Installing: /usr/local/lib/SomeLib/somesharedlibrary
-- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake
-- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake
Run Code Online (Sandbox Code Playgroud)

现在,CMake有一个find_package()打开Find*.cmake文件并在系统上的库之后搜索并定义一些变量等SomeLib_FOUND.

我的CMakeLists.txt包含这样的内容:

set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
Run Code Online (Sandbox Code Playgroud)

第一个命令定义了CMake在搜索之后搜索的位置,Find*.cmake并且我添加SomeLibFindSomeLib.cmake可以找到的目录,因此find_package()按预期工作.

但这find_package()有点奇怪,因为存在的原因之一是远离非跨平台硬编码路径.

这通常是怎么做的?我应该将cmake/目录复制SomeLib到我的项目中并设置CMAKE_MODULE_PATH相对吗?

cmake

141
推荐指数
2
解决办法
13万
查看次数

标签 统计

cmake ×1