如果仍然需要指定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

现在,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相对位置吗?


蛊毒传说
浏览 2670回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP