You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置CMake全局将所有.cpp文件当作CUDA源文件编译?

全局将.cpp文件按CUDA编译的CMake方案

要实现全局让CMake把所有.cpp文件当作CUDA(.cu)源文件编译,无需逐个设置文件属性,可以通过修改CMake的CUDA源文件扩展名配置来实现,具体步骤如下:

  1. 确保项目启用CUDA支持
    在顶层CMakeLists.txt中,先明确启用CUDA语言支持,可通过以下两种方式之一:

    # 方式1:在project命令中指定CUDA语言
    project(YourProjectName LANGUAGES CXX CUDA)
    
    # 方式2:单独启用CUDA语言
    enable_language(CUDA)
    
  2. 全局关联.cpp后缀到CUDA编译
    在FORCE_CUDA开关生效时,将.cpp添加到CMake识别的CUDA源文件扩展名列表中:

    if(FORCE_CUDA)
        # 把.cpp后缀加入CUDA源文件扩展名集合
        set(CMAKE_CUDA_SOURCE_FILE_EXTENSIONS ${CMAKE_CUDA_SOURCE_FILE_EXTENSIONS} cpp)
    endif()
    

原理说明

CMAKE_CUDA_SOURCE_FILE_EXTENSIONS是CMake内置变量,默认值为cu;cuh,用于定义哪些后缀的文件会被自动识别为CUDA源文件。将.cpp添加到这个列表后,CMake在扫描项目源文件时,会自动把所有.cpp文件当作CUDA文件处理,调用nvcc进行编译,完全替代原来逐个设置set_source_files_properties的繁琐操作。

注意事项

  • 如果项目中存在部分需要保留C++编译的.cpp文件,可单独为这些文件设置属性覆盖全局配置:
    set_source_files_properties(不需要转CUDA的文件.cpp PROPERTIES LANGUAGE CXX)
    
  • 该方法适用于CMake 3.8及以上版本(CUDA支持正式集成到CMake核心的版本),若使用更低版本需确保CUDA工具链配置正确。

内容的提问来源于stack exchange,提问作者alfC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:53:21