如何使用cmake使用不同的编译器构建多个可执行文件?

时间:2016-07-15 09:51:23

标签: c++ makefile build cmake nmake

以下情况:

目前,我有一个C ++ / CUDA项目,我使用 make 生成两个不同的可执行文件:第一个只是一个CPU版本,它忽略了CUDA部分,第二个是是GPU版本。

我可以运行 make 构建两个版本, make cpu 只构建CPU版本而 make gpu 只构建GPU版本。 对于CPU版本,使用Intel编译器,对于GPU版本,使用带有g ++的nvcc。

为什么我考虑使用cmake:

现在我也希望能够使用nmake在Windows下构建项目。因此,我认为cmake是基于平台生成make或nmake文件的合适解决方案。

问题:

但是,似乎很难根据目标(Using CMake with multiple compilers for the same language)指定编译器。

问题:

通过使用cmake,这是实现上述行为的最佳方式,使用不同的编译器构建不同的可执行文件,使用不同的代码库以及Windows和Linux相同的代码库?

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以使用cmake的CUDA支持:FindCUDA

您的cmake列表将如下所示:

find_package(CUDA)

add_executable(cpu ${SRC_LIST})
CUDA_ADD_EXECUTABLE(gpu ${SRC_LIST})