2015-05-12 40 views
2

我正在處理各種項目,其中一些項目提供了一個.cmake擴展名,我希望在項目的開發包安裝在您的Ubuntu系統上時進行安裝。在Ubuntu中安裝.cmake擴展文件的位置是什麼?

CMake的2.8的模塊保存

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

下,我認爲這是是你,我想安裝我自己的擴展(明知它會打破一次我們去的cmake-3.0)。

然而,似乎是另一個位置,其中包安裝自己的擴展:

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

是否有一個地方,我可以找到這個文件的地方嗎?到目前爲止,我在谷歌搜索還沒有向我指出了正確的方向...

我已經找到了以下的答案,但是,這似乎是特定於cmake並沒有Ubuntu的:

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

回答

3

你可以使用您在問題中提到的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的腳本:通過find_package您的用戶可能使用您的CMake的腳本

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

現在:

# User CMakeLists.txt 
find_package(SomeProject REQUIRED) 
message(STATUS "SOME_PROJECT_SOME_VAR = ${SOME_PROJECT_SOME_VAR}") 
some_project_func() 
include(SomeProjectExtensions)