CMake 3.6 發行說明¶
自 CMake 3.5 以來的變更包括以下內容。
新功能¶
產生器¶
Ninja
產生器學會產生sub/dir/all
形式的虛擬目標,以驅動子目錄的建置。這等同於使用 Makefile 產生器 的cd sub/dir; make all
。Ninja
產生器現在將系統標頭檔包含在建置相依性中,以確保在更新系統套件時進行正確的重新建置。Visual Studio 14 2015
產生器學會支援 Clang/C2 工具集,例如使用-T v140_clang_3_7
選項。此功能為實驗性。
指令¶
add_custom_command()
和add_custom_target()
指令學會如何使用CROSSCOMPILING_EMULATOR
可執行目標屬性。install()
指令學會一個新的EXCLUDE_FROM_ALL
選項,將安裝規則排除在預設安裝之外。list()
指令新增了一個FILTER
子指令,可以使用正規表示式篩選清單元素。string(TIMESTAMP)
和file(TIMESTAMP)
指令增加了對%s
佔位符的支援。這是自 UNIX 紀元以來的秒數。
變數¶
引入了
CMAKE_DEPENDS_IN_PROJECT_ONLY
變數,以告知 Makefile 產生器 將相依性掃描限制在專案原始碼和建置樹狀結構中的檔案。引入了一個新的
CMAKE_HOST_SOLARIS
變數,以指示 CMake 何時在 Oracle Solaris 主機上執行。新增了一個
CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES
變數,供工具鏈檔案使用,以指定要附加到所有編譯器命令列的系統包含目錄。現在已記錄了
CMAKE_<LANG>_STANDARD_LIBRARIES
變數。它旨在供工具鏈檔案使用,以指定要添加到所有連結器命令列的系統程式庫。引入了
CMAKE_NINJA_OUTPUT_PATH_PREFIX
變數,以告知Ninja
產生器將產生的build.ninja
檔案設定為用作subninja
。新增了
CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
變數,供工具鏈檔案使用,以指定必須由try_compile()
指令傳播到測試專案中的平台特定變數。新增了
CMAKE_TRY_COMPILE_TARGET_TYPE
變數,以選擇性地告知try_compile()
指令建置靜態程式庫而不是可執行檔。這對於無法在沒有自訂旗標或指令碼的情況下連結二進位檔的交叉編譯工具鏈很有用。
屬性¶
引入了
DEPLOYMENT_REMOTE_DIRECTORY
目標屬性,以告知Visual Studio 9 2008
和Visual Studio 8 2005
產生器產生 WinCE 專案部署和偵錯器設定的「遠端目錄」。引入了
<LANG>_CLANG_TIDY
目標屬性和支援的CMAKE_<LANG>_CLANG_TIDY
變數,以告知 Makefile 產生器 和Ninja
產生器,針對C
和CXX
語言與編譯器一起執行clang-tidy
。引入了
TIMEOUT_AFTER_MATCH
測試屬性,以選擇性地告知 CTest 在符合測試中的某些輸出後強制執行第二個逾時。引入了
VS_CONFIGURATION_TYPE
目標屬性,以指定支援 VS 2010 及更高版本的 Visual Studio 產生器 的自訂專案檔案類型。引入了
VS_STARTUP_PROJECT
目錄屬性,以針對 Visual Studio 產生器 指定產生解決方案 (.sln
檔案) 的預設啟動專案。
模組¶
CMakePushCheckState
模組現在會推送/彈出/重設CheckTypeSize
中使用的變數CMAKE_EXTRA_INCLUDE_FILES
。ExternalProject
模組新增了GIT_SHALLOW 1
選項,以執行 Git 儲存庫的淺層複製。
-
<PackageName>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb
FindBISON
模組的BISON_TARGET
巨集現在透過傳遞VERBATIM
選項給內部的add_custom_command()
呼叫,來支援特殊字元。這可能會破壞那些為了繞過錯誤而手動新增跳脫字元的客戶端。FindFLEX
模組的FLEX_TARGET
巨集現在透過傳遞VERBATIM
選項給內部的add_custom_command()
呼叫,來支援特殊字元。這可能會破壞那些為了繞過錯誤而手動新增跳脫字元的客戶端。為了與其他 find 模組保持一致,
FindProtobuf
模組的輸入和輸出變數全部從PROTOBUF_
重新命名為Protobuf_
。如果提供了舊格式的輸入變數,仍然會被接受,而舊格式的輸出變數則始終會提供。CPack RPM Generator
現在支援每個元件的 CPackRPM 特定變數中使用大寫的元件名稱。例如,名為foo
的元件現在期望元件特定變數為CPACK_RPM_FOO_PACKAGE_NAME
,而之前則期望為CPACK_RPM_foo_PACKAGE_NAME
。變數中使用的大寫元件名稱部分與其他 CPack 變數使用的慣例相容。為了向後相容,舊格式的變數仍然有效,如果同時設定了兩個版本的變數,則首選舊格式,但未來首選的用法是在變數中使用大寫的元件名稱。在後續版本中將新增到 CPackRPM 的新變數將只支援大寫元件變數格式。CPack NSIS 產生器的組態檔範本已修復,會將
CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL
選項使用的解除安裝工具路徑加上引號。這避免了依賴不安全的 Windows 功能來執行路徑中帶有空格的解除安裝工具。