Visual Studio 2017 MSVC与NVCC __cplusplus宏不匹配

时间:2018-09-13 10:01:00

标签: c++ cmake cuda visual-studio-2017 thrust

我正在使用Visual Studio 2017,平台工具集v141和CUDA Toolkit 9.2。 我注意到用nvcc编译 thrust :: device_vector 时,不存在move构造函数和move分配。原因是检查Thrust库中 __ cplusplus 宏的值的条件。

docs中所述,我将C ++语言标准设置为 / std:c ++ 17 ,并另外设置了 / Zc:__ cplusplus 在msvc中正确定义了宏,即 201703 。 但是,对于由nvcc编译的文件,宏设置为 199711

我创建了一个简单的案例来再现问题。

test.cuh:

#pragma once
#include <iostream>
void test();

test.cu:

#include "test.cuh"
void test()
{
    std::cout << "CU  file: " << __cplusplus << std::endl;
}

main.cpp:

#include "test.cuh"
int main()
{
    test();
    std::cout << "CPP file: " << __cplusplus << std::endl;
    return 0;
}

输出:

CU  file: 199711
CPP file: 201703

我正在寻找一种同样适用于使用FindCUDA的CMake的解决方案。

0 个答案:

没有答案