我正在尝试使用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
并且我添加SomeLib
了FindSomeLib.cmake
可以找到的目录,因此find_package()
按预期工作.
但这find_package()
有点奇怪,因为存在的原因之一是远离非跨平台硬编码路径.
这通常是怎么做的?我应该将cmake/
目录复制SomeLib
到我的项目中并设置CMAKE_MODULE_PATH
相对吗?
cmake ×1