在Ubuntu中安装.cmake扩展文件的位置是什么?

时间:2015-05-12 21:40:14

标签: ubuntu installation cmake

我正在开发各种项目,其中一些项目提供了一个.cmake扩展,我想在你的Ubuntu系统上安装项目的开发包时安装它。

cmake 2.8的模块保存在

/usr/share/cmake-2.8/Modules/...

而且我认为那是我想要安装自己的扩展程序(知道一旦我们转到cmake-3.0就会中断)。

但是,似乎有另一个位置,包安装自己的扩展:

/usr/share/cmake/<project-name>/...

有没有可以找到相关文档的地方?到目前为止,我在Google上的搜索并没有指出我正确的方向......

我找到了以下答案,但这似乎是特定于cmake而不是Ubuntu:

CMake: Where to install FooBarConfig.cmake and FooBarConfigVersion.cmake?

1 个答案:

答案 0 :(得分:4)

您可以使用您在问题中提到的CMake包配置机制。

成像您有以下CMake文件:

SomeProjectConfig.cmake
SomeProjectConfigVersion.cmake
SomeProjectExtensions.cmake

SomeProjectConfig.cmakeSomeProjectConfigVersion.cmake可由CMakePackageConfigHelpers module生成。

例如,您可以将它们安装到/usr/share/cmake/SomeProject/文件夹中。有关CMake使用的默认路径的完整列表,请参阅find_package documentation

SomeProjectConfig.cmake中,您可以添加SomeProjectExtensions.cmake文件或展开CMAKE_MODULE_PATH变量,以便用户包含CMake脚本:

# SomeProjectConfig.cmake
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
set(SOME_PROJECT_SOME_VAR "...")
function(some_project_func)
    ...
endfunction()

现在,您的用户可以通过find_package

使用您的CMake脚本
# User CMakeLists.txt
find_package(SomeProject REQUIRED)
message(STATUS "SOME_PROJECT_SOME_VAR = ${SOME_PROJECT_SOME_VAR}")
some_project_func()
include(SomeProjectExtensions)