有人可以解释这个 Clang 论点是如何工作的吗?
Can someone explain how this Clang argument working?
在搜索Google时,我发现下面这个命令可以显示clang
默认包含路径,但它是如何工作的呢?我查看了帮助页面并知道每个参数的含义,但我无法理解这些参数如何协同工作,尤其是 c++
和 -v
之间的 -
。
clang++ -E -x c++ - -v < /dev/null
clang++
是程序名运行.
-E
是一个选项,告诉 clang 在预处理后停止(即它不会 运行 实际的编译器或链接器,只是预处理器)。
-x c++
是语言覆盖选项。它告诉 clang 输入文件应该被解释为 C++ 源代码(默认行为是从扩展名中检测文件类型,例如 .cpp
或 .o
)。
我认为 -v
意味着 "verbose"。它告诉 clang 在编译期间打印额外信息。
-
不是一个选项;它是输入文件的名称。与许多其他工具一样,输入文件名 -
告诉 clang 从其标准输入中读取。
最后 < /dev/null
是一个 I/O 重定向。它告诉 shell 将 clang 的标准输入连接到 /dev/null
(实际上是一个空文件)。
最后两部分有点迂回:与其让 clang 从 stdin 读取并将 stdin 重定向到 /dev/null
,不如让 clang 直接从 /dev/null
读取:
clang++ -E -x c++ -v /dev/null
无论如何,重点是预处理 (-E
) 一个空文件 (/dev/null
),就好像它是 C++ 代码 (-x c++
)。
在搜索Google时,我发现下面这个命令可以显示clang
默认包含路径,但它是如何工作的呢?我查看了帮助页面并知道每个参数的含义,但我无法理解这些参数如何协同工作,尤其是 c++
和 -v
之间的 -
。
clang++ -E -x c++ - -v < /dev/null
clang++
是程序名运行.
-E
是一个选项,告诉 clang 在预处理后停止(即它不会 运行 实际的编译器或链接器,只是预处理器)。
-x c++
是语言覆盖选项。它告诉 clang 输入文件应该被解释为 C++ 源代码(默认行为是从扩展名中检测文件类型,例如 .cpp
或 .o
)。
-v
意味着 "verbose"。它告诉 clang 在编译期间打印额外信息。
-
不是一个选项;它是输入文件的名称。与许多其他工具一样,输入文件名 -
告诉 clang 从其标准输入中读取。
最后 < /dev/null
是一个 I/O 重定向。它告诉 shell 将 clang 的标准输入连接到 /dev/null
(实际上是一个空文件)。
最后两部分有点迂回:与其让 clang 从 stdin 读取并将 stdin 重定向到 /dev/null
,不如让 clang 直接从 /dev/null
读取:
clang++ -E -x c++ -v /dev/null
无论如何,重点是预处理 (-E
) 一个空文件 (/dev/null
),就好像它是 C++ 代码 (-x c++
)。