我之前问过:How to compile C++ as CUDA using CMake,这很有帮助。但后来意识到我有一个后续问题。
我要做的是使用不同的编译器将一个文件编译两次。例如:
cmake_minimum_required(VERSION 3.9)
project(cuda_test LANGUAGES CUDA CXX)
add_executable(cuda_test_host test.cpp) # build with GCC for host
set_source_files_properties(test.cpp PROPERTIES LANGUAGE CUDA)
add_executable(cuda_test_cuda test.cpp) # build with NVCC for CUDA
但是,当然set_source_files_properties
不是特定于特定目标的,因此cuda_test_host
和cuda_test_cuda
最终都是由NVCC构建的。
我在StackOverflow上看到了类似的问题,建议在其中创建带有不同CMake文件的子目录,但我想尽可能避免这种情况。