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 的未來版本中移除。