我怎樣才能設置cmake變量只有當它沒有被用戶更改?設置一個cmake變量,如果它沒有被用戶更改
我有這個變量:
set(DIR "testdir" CACHE PATH "main directory")
set(SUBDIR ${DIR}/subdir CACHE PATH "subdirectory")
在第一次運行的變量初始化爲testdir
和testdir/subdir
。
當用戶改變DIR
和重播的cmake不改變SUBDIR
,我想產生一個新的SUBDIR
路徑,同時我希望保持SUBDIR
路徑,當用戶改變了它。
因此SUBDIR
應該設置爲基於新值DIR
的新默認值,如果DIR
已更改且SUBDIR
從未更改過。
您可以使用['MODIFIED'](https://cmake.org/cmake/help/latest/prop_cache/MODIFIED.html)緩存變量屬性,但文檔中顯示「不設置或獲取」。也許更好的方法是用'if'語句檢查修改?所以如果'SUBDIR'不等於'testdir/subdir',請使用'SUBDIR'。 – Florian
if語句的問題是,當我在第一次配置後更改''DIR''時,'SUBDIR'不會改變(即它保持舊的默認值)。 – allo