CMP0125¶
在版本 3.21 中新增。
find_file()
、find_path()
、find_library()
和 find_program()
命令會將結果快取在其第一個引數指定的變數中。在 CMake 3.21 之前的版本中,如果在呼叫之前已存在具有該名稱的快取變數,但快取變數沒有類型,則會捨棄任何同名的非快取變數,並且始終使用快取變數(另請參閱 CMP0126
,了解不同但相似的行為)。這與非快取變數應優先於同名快取變數的慣例相矛盾。如果使用者在命令列上設定了沒有類型的快取變數,例如 cmake -DMYVAR=blah ...
而不是 cmake -DMYVAR:FILEPATH=blah
,則可能會發生這種情況。
與上述相關,如果具有指定名稱的快取變數已存在且確實具有類型,則各種 find_...()
命令將傳回該值而不變更。特別是,如果它包含相對路徑,則在這種情況下它不會轉換為絕對路徑。
當策略 CMP0125
設定為 OLD
或未設定時,行為如上所述。當它設定為 NEW
時,行為如下:
如果在呼叫
find_...()
命令時存在指定名稱的非快取變數,則將使用其值,無論是否已存在同名的快取變數。在這種情況下,如果之前不存在此類快取變數,則不會建立快取變數。如果指定名稱的快取變數已存在,則快取將更新為與非快取變數相符。各種
find...()
命令將始終在結果變數中提供絕對路徑,除非快取或非快取變數提供的相對路徑無法解析為現有路徑。
此策略在 CMake 3.21 版本中引入。它可以通過 cmake_policy()
或 cmake_minimum_required()
進行設定。如果未設定,CMake 不會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為依定義已棄用
,並可能在未來的 CMake 版本中移除。