FindXXX.cmake文件适用于本地编译的库的正确位置是什么?

时间:2011-04-03 11:02:42

标签: linux cmake

我在Linux系统上手动安装了一个lib(到/ usr / local)(顺便说一下,Eigen3)。有一个与lib捆绑在一起的FindEigen3.cmake,但默认情况下没有安装在任何地方。

有/usr/share/cmake-x.y/Modules,其中CMake会查找其他模块,但是将这些文件放在那里似乎不是办法。是否在/ usr / local下还有一个默认扫描的等效位置?或者,创建自定义库模块的标准方法是什么?

(虽然问题与编程没有严格关联,但我认为图书馆作者也可能会遇到另一方面的问题:手动安装时将这些文件放在哪里。)

3 个答案:

答案 0 :(得分:6)

请参阅CMake文档中有关“find_package”命令的注释:

http://cmake.org/cmake/help/v2.8.8/cmake.html#command:find_package

它说的是编写一个“project-config”文件,以及在哪里安装它,这样find_package(Eigen3)可以在没有FindEigen3.cmake查找模块的情况下工作......它很详细,但信息在那里

另请参阅用户贡献的维基页面,例如:

https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/How-to-create-a-ProjectConfig.cmake-file

答案 1 :(得分:5)

在我们的项目中,我们将FIndXXX.cmake模块放在文件夹项目根目录/ cmake / modules 中。为此,您必须在项目根目录/ CMakeLists.txt 中指定(类似于DLRdave已经说过的内容):

set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)  

答案 2 :(得分:3)

在调用find_package之前,需要将CMAKE_MODULE_PATH设置为包含FindEigen3.cmake文件所在的目录。我相信:

set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} <your path> )

会做的伎俩,但我没有设置测试可用的设置,所以你可能需要按一下这种技术。