我有一个lib我在Linux系统上手动安装(到/ usr/local)(顺便说一下,Eigen3).有一个与lib捆绑在一起的FindEigen3.cmake,但默认情况下没有安装在任何地方.
有/ usr/share/cmake-xy/Modules,其中CMake寻找其他模块,但是将这些文件放在那里似乎不是做事的方法.是否在/ usr/local下还有一个默认扫描的等效位置?或者创建自定义库模块的标准方法是什么?
(虽然这个问题与编程并没有严格的联系,但我认为图书馆作者也可能会遇到另一方面的相同问题:手动安装时将这些文件放在哪里.)
有关"find_package"命令,请参阅CMake文档中的注释:
http://cmake.org/cmake/help/v2.8.8/cmake.html#command:find_package
它说的是编写一个"project-config"文件,以及在哪里安装它,这样find_package(Eigen3)可以在没有FindEigen3.cmake查找模块的情况下工作......它很详细,但信息就在那里.
另请参阅用户贡献的Wiki页面,例如:
在我们的项目中,我们将FIndXXX.cmake模块放在文件夹项目根目录dir / cmake / modules中。为此,您必须在项目根目录dir / CMakeLists.txt中指定(类似于DLRdave已经说过的内容):
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
Run Code Online (Sandbox Code Playgroud)
您需要设置CMAKE_MODULE_PATH以包括FindEigen3.cmake文件所在的目录,然后才能调用find_package。我相信:
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} <your path> )
Run Code Online (Sandbox Code Playgroud)
可以解决问题,但我目前没有设置可测试的设置,因此您可能需要稍微尝试一下该技术。
| 归档时间: |
|
| 查看次数: |
14641 次 |
| 最近记录: |