我在Linux系统上手动安装了一个lib(到/ usr / local)(顺便说一下,Eigen3)。有一个与lib捆绑在一起的FindEigen3.cmake,但默认情况下没有安装在任何地方。
有/usr/share/cmake-x.y/Modules,其中CMake会查找其他模块,但是将这些文件放在那里似乎不是办法。是否在/ usr / local下还有一个默认扫描的等效位置?或者,创建自定义库模块的标准方法是什么?
(虽然问题与编程没有严格关联,但我认为图书馆作者也可能会遇到另一方面的问题:手动安装时将这些文件放在哪里。)
答案 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查找模块的情况下工作......它很详细,但信息在那里
另请参阅用户贡献的维基页面,例如:
答案 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> )
会做的伎俩,但我没有设置测试可用的设置,所以你可能需要按一下这种技术。