Open xq114 opened 1 year ago
可以用 add_cuflags("-std=c++17")
单独对 cuda 设置的,没必要为此单独定义一套 language 出来。
这样不会和set_languages("cxx20")冲突吗?
有可能会,靠右边的 flags 会覆盖之前的,就看哪个被后加了。。要么就是遇到这种的,你 c++ 也用 add_cxflags 设置,就不会完全冲突了。
不过新增 cuda17 的话,要改的地方太多,还得对各种 project generator 也得额外改动支持。。也很麻烦的,仅仅只是为了处理一个 cuda 的 bug
或者可以试下
add_files("src/*.cu", {languages = "c++17"})
set_languages("c++20")
你在什么场景下需要该功能?
https://github.com/fmtlib/fmt/issues/3394
由于NVCC的bug,cuda中开了-std=c++20 string literal就无法工作,从而无法使用fmt库。解决办法是cpp文件继续使用c++20,但cuda文件使用c++17. 然而xmake中不支持对cuda language单独设置,因此只能使用add_cxflags单独设置language flags并且对每个平台独立判断,非常不方便。
描述可能的解决方案
增加
add_languages("cuda17")
等,在nvcc编译时优先使用cuda的language standard,如果没有设置则fallback到c++ standard描述你认为的候选方案
No response
其他信息
No response