将MSVC编译器标志转换为Clang编译器标志

时间:2020-10-17 02:26:51

标签: python c++ visual-c++ clang compiler-flags

我正在使用Microsoft Visual Studio编译器cl.exe编译的大型C / C ++项目。我正在为该项目准备一个compilation database。这只是一个包含命令列表的文件,为了编译每个源代码文件,需要运行这些命令。每个命令都具有编译器的名称,要编译的文件以及确定编译各个方面的一组编译器标志。

我想通过基于clang的自定义工具运行整个项目。为此,我只需将编译数据库JSON文件传递到该工具中。但是这里有一个问题。编译数据库文件在命令中使用cl.exe编译器。现在cl.execlang.exe具有不同的编译器标志。例如,要禁用优化,cl.exe将花费/Od,而clang.exe将花费-O0。因此,为cl.exe编写的编译命令在分配给clang.exe时将不起作用。

因此,作为解决方案,我正在创建一个Python脚本来解析该JSON文件,并将MSVC编译器标志转换为相应的Clang编译器标志。在解析命令行标志时,我将它们编入字典中,其中的键是MSVC编译器标志的字符串,而数据是Clang编译器标志,以便快速替换它们。

现在我的问题是:

我如何知道哪些MSVC编译器标志对应于哪些Clang编译器标志?我实际上从哪里获取要填充此词典的数据?我正在寻找一张列出MSVC编译器标志及其对应的Clang编译器标志的表。或者,如果还不存在这样的表格,我希望回答者在问题的答案中提供这样的表格。

假设我不能为此项目使用clang-cl。原因是该编译数据库的接收者是应用程序DoxygenSourceTrail,它们使用编译数据库来构造AST并从中生成有关代码的文档。据我所知,它们不支持clang-cl,只是常规的clang编译器,但是如果您知道如何使它们与clang-cl一起工作,那么我会接受该答案。

0 个答案:

没有答案