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 中移除。