目前,我有一个C ++ / CUDA项目,我使用 make 生成两个不同的可执行文件:第一个只是一个CPU版本,它忽略了CUDA部分,第二个是是GPU版本。
我可以运行 make 构建两个版本, make cpu 只构建CPU版本而 make gpu 只构建GPU版本。 对于CPU版本,使用Intel编译器,对于GPU版本,使用带有g ++的nvcc。
现在我也希望能够使用nmake在Windows下构建项目。因此,我认为cmake是基于平台生成make或nmake文件的合适解决方案。
但是,似乎很难根据目标(Using CMake with multiple compilers for the same language)指定编译器。
通过使用cmake,这是实现上述行为的最佳方式,使用不同的编译器构建不同的可执行文件,使用不同的代码库以及Windows和Linux相同的代码库?
答案 0 :(得分:1)
在您的情况下,您可以使用cmake的CUDA支持:FindCUDA。
您的cmake列表将如下所示:
find_package(CUDA)
add_executable(cpu ${SRC_LIST})
CUDA_ADD_EXECUTABLE(gpu ${SRC_LIST})