在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.cmake
和SomeProjectConfigVersion.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)
我正在从事各种项目,其中一些项目提供了一个 .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.cmake
和SomeProjectConfigVersion.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
:
# User CMakeLists.txt
find_package(SomeProject REQUIRED)
message(STATUS "SOME_PROJECT_SOME_VAR = ${SOME_PROJECT_SOME_VAR}")
some_project_func()
include(SomeProjectExtensions)