如何设置CMake全局将所有.cpp文件当作CUDA源文件编译?
全局将.cpp文件按CUDA编译的CMake方案
要实现全局让CMake把所有.cpp文件当作CUDA(.cu)源文件编译,无需逐个设置文件属性,可以通过修改CMake的CUDA源文件扩展名配置来实现,具体步骤如下:
确保项目启用CUDA支持
在顶层CMakeLists.txt中,先明确启用CUDA语言支持,可通过以下两种方式之一:# 方式1:在project命令中指定CUDA语言 project(YourProjectName LANGUAGES CXX CUDA) # 方式2:单独启用CUDA语言 enable_language(CUDA)全局关联.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
相关产品推荐
相关产品推荐

