2017-02-20 68 views
1

我喜歡使用配置文件來設置多個緩存變量。目的是爲了在機器上運行的每個項目重用它,或者爲測試或特殊用途選擇不同的庫版本。如何爲CMake項目加載用戶特定配置

我可以用CMake的實現它的文件像這樣的:

set(path_to_lib_one path/to/lib/one) 
set(option1 dont_want_to_bother_setting_this_option) 
set(option2 that_option_have_to_be_set_again) 

並調用include(myConfigfile)

但我想知道他們是否是一種緩存式的做法,以及管理用戶/設置特定配置的最佳做法是什麼。

回答

1

使用CMake提供的初始緩存選項。您存儲在正確格式的選項(set with CACHE`)和呼叫

cmake -C <cacheFile> <pathToSourceDir> 

自給例如

CMakeLists.txt看起來像

,並要預先設置三個變量。該cacheFile.txt看起來像

set(path_to_lib_one path/to/lib/one CACHE FILEPATH "some path") 
set(option1 "dont_want_to_bother_setting_this_option" CACHE STRING "some option 1") 
set(option2 42 CACHE INT "and an integer") 

和您的CMake的調用(從源目錄下的目錄build

cmake -C cacheFile.txt .. 

輸出是

loading initial cache file ../cacheFile.txt 
[..] 
path/to/lib/one/dont_want_to_bother_setting_this_option/42 

文檔: https://cmake.org/cmake/help/latest/manual/cmake.1.html#options

載入前ternal緩存文件

此外,CMake提供了一種方法來讀取由另一個項目創建的緩存文件。該命令是load_cache。您可以使用它來從外部緩存加載變量或將它們複製到當前項目的緩存中。

文檔:https://cmake.org/cmake/help/latest/command/load_cache.html

+0

從你所指出的DOC:>指定的文件應包含使用該緩存選項,而不是一個高速緩存格式文件SET命令的CMake的腳本。 – jvtrudel

+0

奇怪的錯誤... CMake錯誤:源目錄「D:/1-build-dev/qt-python-cmake/CMakeCache2.txt」是一個文件,而不是一個目錄。 – jvtrudel

+0

即使我用''''SET(...)''''...... – jvtrudel