我想使用我的代码库的默认编译标志来预编译某个较大的头文件。例如,这将是-O3
。但是,如果我希望将此PCH包含在不需要任何优化-O0
的构建目标中,则clang会拒绝此操作,因为它们具有冲突的预定义宏。
“ __OPTIMIZE__
预定义宏已在PCH文件中启用,但当前已禁用”
我看到有一个-fno-validate-pch
选项可以完全满足我的要求,但是在Clang 6和Clang 8中都不存在。
https://reviews.llvm.org/D24054
最终,在这种情况下,有什么办法告诉clang允许继续编译?这些预编译标头的好处是,它们通常可以在数百个构建目标中使用,但是如果某些标志(尤其是优化级别)必须相同,则将失去可用性和便利性。
这已在Ubuntu 16.04上使用Clang ++ 6.0.0进行了测试。