CMP0174¶
在版本 3.31 中新增。
cmake_parse_arguments(PARSE_ARGV)
在單值關鍵字後定義一個空字串的變數。
使用 PARSE_ARGV
形式的 cmake_parse_arguments()
命令的主要原因之一是更穩健地處理與空值相關的邊緣情況。非 PARSE_ARGV
形式不會保留空參數,但 PARSE_ARGV
形式會。對於給定的每個單值關鍵字,即使關鍵字後跟著一個空字串,也應該定義一個變數。
在 CMake 3.31 之前的版本中,如果單值關鍵字後給定的值是空字串,則不會定義任何變數。這意味著程式碼無法偵測到關鍵字未給出,以及關鍵字已給出但值為空字串之間的差異,除非迭代所有參數並檢查關鍵字是否存在。
對於此策略的 OLD
行為,cmake_parse_arguments(PARSE_ARGV)
不會為後跟空字串或根本沒有值的單值關鍵字定義變數。
對於 NEW
行為,cmake_parse_arguments(PARSE_ARGV)
始終為參數中給出的每個關鍵字定義一個變數,即使是值為空字串或根本沒有值的單值關鍵字。使用 NEW
行為,程式碼可以僅使用 if(DEFINED <prefix>_<keyword>)
穩健地檢查是否給定了單值關鍵字。
此策略在 CMake 版本 3.31 中引入。可以透過 cmake_policy()
或 cmake_minimum_required()
設置。如果未設置,CMake 會發出警告,並使用 OLD
行為。
注意
策略的 OLD
行為依定義已棄用
,並可能在 CMake 的未來版本中移除。