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 將不會將任何架構標誌傳遞給編譯器。