好吧,我假设 -D
前缀表示 #define
后跟任何变量名,但是我找不到关于编译器标志的此 makefile 功能的任何文档.
CXX=clang -DTHISISPREPROCESSORVARIABLE
所以 -DTHISISPREPROCESSORVARIABLE
在 make 过程中将定义预处理器变量 THISISPREPROCESSORVARIABLE
并使后续的 cout
编译。
#ifdef THISISPREPROCESSORVARIABLE
std::cout << "this should exist with the -D" << endl;
#endif
这是正确的假设吗?它似乎有效,任何人都可以确认此 -D
指的是 #define
(任何人都可以链接到一些可以填写所有这些命令定义的 makefile 文档?)
最佳答案
GCC , MSVC , 和 Intel , 都记录了这个标志,而 Clang 默认只使用 GCcflags。我刚在 Clang's help page waaaay at the bottom 上找到它(对于 Windows 的 clang-cl)和 harmic发现比较清楚了here适用于 Linux。
Execute
clang-cl /?
to see a list of supported options:
/D <macro[=value]>
Define macro
harmic观察到这些是编译器 标志,与 makefile 毫无关系,这就是为什么您在 makefile 文档中找不到它的原因。这些标志可以放在 makefile 中,该 makefile 会将它们传递给编译器,但不是 makefile 的一部分。
关于c++ - 什么是 -D 编译器标志 C++(clang、GNU、MSVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26226874/