CMP0104¶
於版本 3.18 新增。
當 CMAKE_CUDA_ARCHITECTURES
在 CMAKE_CUDA_COMPILER_ID
為 NVIDIA
時初始化。如果 CUDA_ARCHITECTURES
為空,則拋出錯誤。
CMake 3.18 中引入的 CMAKE_CUDA_ARCHITECTURES
用於初始化 CUDA_ARCHITECTURES
,這會將正確的程式碼生成標誌傳遞給 CUDA 編譯器。
在此之前,使用者必須手動指定程式碼生成標誌。此政策是為了與手動指定程式碼生成標誌向後相容。
此政策的 OLD
行為是在 CMAKE_CUDA_ARCHITECTURES
在 CMAKE_CUDA_COMPILER_ID
為 NVIDIA
時不初始化。允許 CUDA_ARCHITECTURES
為空。
此政策的 NEW
行為是在 CMAKE_CUDA_ARCHITECTURES
在 CMAKE_CUDA_COMPILER_ID
為 NVIDIA
時初始化,並且如果在生成期間 CUDA_ARCHITECTURES
為空,則拋出錯誤。
如果 CUDA_ARCHITECTURES
設定為 false 值,則不會將任何架構標誌傳遞給編譯器。這樣做的目的是為了支援封裝程式以及需要完全控制所傳遞標誌的少數情況。
此政策是在 CMake 版本 3.18 中引入的。可以使用 cmake_policy()
或 cmake_minimum_required()
來設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為依定義 已棄用
,並可能在未來的 CMake 版本中移除。
範例¶
set_target_properties(tgt PROPERTIES CUDA_ARCHITECTURES "35;50;72")
為實際和虛擬架構 30
、50
和 72
生成程式碼。
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70-real 72-virtual)
為實際架構 70
和虛擬架構 72
生成程式碼。
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
CMake 不會將任何架構標誌傳遞給編譯器。