1*5c90c05cSAndroid Build Coastguard Worker // Direct NVCC command line example: 2*5c90c05cSAndroid Build Coastguard Worker // 3*5c90c05cSAndroid Build Coastguard Worker // nvcc ./cuda-cpp14.cu -x cu -I"../include" -l"fmtd" -L"../build/Debug" \ 4*5c90c05cSAndroid Build Coastguard Worker // -std=c++14 -Xcompiler /std:c++14 -Xcompiler /Zc:__cplusplus 5*5c90c05cSAndroid Build Coastguard Worker 6*5c90c05cSAndroid Build Coastguard Worker // Ensure that we are using the latest C++ standard for NVCC 7*5c90c05cSAndroid Build Coastguard Worker // The version is C++14 8*5c90c05cSAndroid Build Coastguard Worker // 9*5c90c05cSAndroid Build Coastguard Worker // https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-cplusplus-language-support 10*5c90c05cSAndroid Build Coastguard Worker // https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros 11*5c90c05cSAndroid Build Coastguard Worker static_assert(__cplusplus >= 201402L, "expect C++ 2014 for nvcc"); 12*5c90c05cSAndroid Build Coastguard Worker 13*5c90c05cSAndroid Build Coastguard Worker #include <fmt/base.h> 14*5c90c05cSAndroid Build Coastguard Worker 15*5c90c05cSAndroid Build Coastguard Worker #include <cuda.h> 16*5c90c05cSAndroid Build Coastguard Worker #include <iostream> 17*5c90c05cSAndroid Build Coastguard Worker 18*5c90c05cSAndroid Build Coastguard Worker extern auto make_message_cpp() -> std::string; 19*5c90c05cSAndroid Build Coastguard Worker extern auto make_message_cuda() -> std::string; 20*5c90c05cSAndroid Build Coastguard Worker main()21*5c90c05cSAndroid Build Coastguard Workerint main() { 22*5c90c05cSAndroid Build Coastguard Worker std::cout << make_message_cuda() << std::endl; 23*5c90c05cSAndroid Build Coastguard Worker std::cout << make_message_cpp() << std::endl; 24*5c90c05cSAndroid Build Coastguard Worker } 25*5c90c05cSAndroid Build Coastguard Worker make_message_cuda()26*5c90c05cSAndroid Build Coastguard Workerauto make_message_cuda() -> std::string { 27*5c90c05cSAndroid Build Coastguard Worker return fmt::format("nvcc compiler \t: __cplusplus == {}", __cplusplus); 28*5c90c05cSAndroid Build Coastguard Worker } 29