我正在处理一个基于CMake的项目,它包含C和CUDA源文件,并且有一些头文件应该包含在这两种语言中。
对于这些头文件,我希望看到的高亮显示和语法检查结果尽可能接近NVCC(CUDA编译器)所看到的结果,因此,例如,我希望定义预处理器符号__CUDACC__
。
对我来说,CMake * 没有 * 定义这样的符号很重要,因为它实际上是NVCC工具链的内部符号,我需要它来进行语法检查。
我试过“Tools-〉C-〉Additional preprocessor directives”,似乎没有效果。我也试过一个名为CMakeLists.txt.config
的文件,似乎也没有效果。
我很乐意给出一个建议。重申一下,我正在寻找一种方法来设置一个define(CPP符号),它只对语法检查系统可见。
1条答案
按热度按时间ercv8c1e1#
在进一步挖掘之后,我发现了一个特定于Clang分析器的属性,该属性是在执行语法检查的分析期间定义的,而不是在编译期间定义的。
请注意,这完全是因为我的项目使用GCC编译,而QT Creator的语法检查通过Clang运行。
这允许一个笨拙的黑客如下,这可能是有用的,也可能不是有用的,这取决于一个人的需要。基本上的想法是,很像你会让Clang观察你的代码,即使你用GCC编译,这实现了类似的文件打算与NVCC一起使用。
clang++
也将相同的特性定义为启用。要解决这个问题,需要在分析器中定义某种宏,但在Clang中没有,到目前为止我还没有找到这样的宏。起初我希望
__clang_analyzer__
能满足这个需要,但根据我的Qt Creator版本(6.0.2),在语法检查期间没有定义宏,所以我们又回到了起点。