我正在尝试使用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
现在,CMake具有一个find_package()可打开Find*.cmake文件并在系统上的库之后进行搜索并定义一些变量(如SomeLib_FOUNDetc)的功能。
我的CMakeLists.txt包含以下内容:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
第一个命令定义了CMake在哪里搜索,Find*.cmake然后我添加SomeLib了FindSomeLib.cmake可以找到的目录,因此find_package()可以正常工作。
但这find_package()有点奇怪,因为存在的原因之一就是要摆脱非跨平台的硬编码路径。
通常如何做?我应该将cmake/目录复制SomeLib到我的项目中并设置CMAKE_MODULE_PATH相对位置吗?