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
设置为假值,则不会将任何架构标志传递给编译器。这旨在支持打包者以及需要完全控制传递标志的极少数情况。
此策略在 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 将不会向编译器传递任何架构标志。