Ale*_*lke 5 installation ubuntu cmake
我正在处理各种项目,其中一些提供了 .cmake 扩展名,每当您的 Ubuntu 系统上安装了该项目的开发包时,我都想安装该扩展名。
cmake 2.8 的模块保存在
/usr/share/cmake-2.8/Modules/...
Run Code Online (Sandbox Code Playgroud)
我认为那是我想要安装我自己的扩展(知道一旦我们转到 cmake-3.0 它就会中断)。
但是,似乎还有另一个位置包安装自己的扩展:
/usr/share/cmake/<project-name>/...
Run Code Online (Sandbox Code Playgroud)
有什么地方可以找到有关此的文档吗?到目前为止,我在 Google 上的搜索并没有为我指明正确的方向......
我找到了以下答案,但这似乎特定于 cmake 而不是 Ubuntu:
您可以使用您在问题中提到的 CMake 包配置机制。
假设您有以下 CMake 文件:
SomeProjectConfig.cmake
SomeProjectConfigVersion.cmake
SomeProjectExtensions.cmake
Run Code Online (Sandbox Code Playgroud)
和可以由CMakePackageConfigHelpersSomeProjectConfig.cmake模块SomeProjectConfigVersion.cmake生成。
/usr/share/cmake/SomeProject/例如,您可以将它们安装到文件夹中。有关 CMake 使用的默认路径的完整列表,请参阅find_package 文档。
您可以在您的文件中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()
Run Code Online (Sandbox Code Playgroud)
现在您的用户可以通过以下方式使用您的 CMake 脚本find_package:
# User CMakeLists.txt
find_package(SomeProject REQUIRED)
message(STATUS "SOME_PROJECT_SOME_VAR = ${SOME_PROJECT_SOME_VAR}")
some_project_func()
include(SomeProjectExtensions)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |