我正在尝试使用.h
来编译扩展名为clang-cl
的C ++头文件。我可以使用clang
参数-x c++-header
完成此操作。
是否可以用clang-cl
做同样的事情?阅读了clang和msvc参数文档后,我尝试了以下三种方法。
c
文件而不是cpp
文件,因此无法使用。/TP
自变量“指定所有源文件均为C ++”。由于文件被视为cpp
文件而不是cpp headers
,因此无法使用。因此,诸如#pragma once
之类的东西不起作用。请注意,我们可以通过使用标头防护来解决此问题,并且如果需要的话,这将是我们的后备方法。clang-cl
个参数-Xclang
和-mllvm
,它们将参数直接转发给clang / llvm。我尝试了-Xclang -x c++-header
,-Xclang -x -Xclang c++-header
,-mllvm -x c++-header
和-mllvm -x -mllvm c++-header
,但是似乎编译c
和cpp
的决定是在转发参数之前发生的被clang / llvm所考虑,因此这种方法也不起作用。如果相关,我们不想更改现有文件扩展名,因为这些扩展名可能是API更改。
如果您要问原因-我知道这可能是非常规的,但我们有这样做的理由。我们使用clang libtooling来获取C ++接口的AST,以代码生成其他语言的绑定。我们编译公共头文件是因为我们什么都不关心。
答案 0 :(得分:0)
尝试
clang-cl /clang:-xc++-header <your .h file>