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

What is the location to install .cmake extension files in Ubuntu?

我正在从事各种项目,其中一些项目提供了一个 .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?

您可以使用问题中提到的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)