您可以使用扩展名为.h的clang-cl编译C ++头文件吗?

时间:2019-12-20 18:09:42

标签: visual-c++ clang

我正在尝试使用.h来编译扩展名为clang-cl的C ++头文件。我可以使用clang参数-x c++-header完成此操作。 是否可以用clang-cl做同样的事情?阅读了clangmsvc参数文档后,我尝试了以下三种方法。

  1. 不向编译器传递任何特殊参数。由于文件被视为c文件而不是cpp文件,因此无法使用。
  2. 使用/TP自变量“指定所有源文件均为C ++”。由于文件被视为cpp文件而不是cpp headers,因此无法使用。因此,诸如#pragma once之类的东西不起作用。请注意,我们可以通过使用标头防护来解决此问题,并且如果需要的话,这将是我们的后备方法。
  3. clang-cl个参数-Xclang-mllvm,它们将参数直接转发给clang / llvm。我尝试了-Xclang -x c++-header-Xclang -x -Xclang c++-header-mllvm -x c++-header-mllvm -x -mllvm c++-header,但是似乎编译ccpp的决定是在转发参数之前发生的被clang / llvm所考虑,因此这种方法也不起作用。

如果相关,我们不想更改现有文件扩展名,因为这些扩展名可能是API更改。

如果您要问原因-我知道这可能是非常规的,但我们有这样做的理由。我们使用clang libtooling来获取C ++接口的AST,以代码生成其他语言的绑定。我们编译公共头文件是因为我们什么都不关心。

1 个答案:

答案 0 :(得分:0)

尝试

clang-cl /clang:-xc++-header <your .h file>