仅运行GCC预处理器-fdirectives *而不使用* implicit -dD

时间:2017-12-14 01:46:27

标签: gcc preprocessor

基本上,我想做标题所说的内容。

我有一些稍微复杂的头文件,我想生成一个我可以作为DLL的公共接口发布的头文件。

我按如下方式生成头文件:

${CMAKE_CXX_COMPILER} ${CMAKE_CXX_FLAGS} -fdirectives-only -P \
  -E ${CMAKE_CURRENT_SOURCE_DIR}/dll_header_base.h -o generated_public_header.h

如果我在没有-fdirectives-only的情况下运行编译器,那么预编译器很多会更加积极地剥离标头的内容。 -fdirectives-only的输出几乎我想要的东西,但该特定标志也强制-dD标志,它将所有编译器定义的宏添加到生成的标头中( 450行!)。

我真的不明白为什么-fdirectives-only强迫-dD首先出现,而对于我的情况,后来的旗帜基本上使它变得毫无用处。查看-dLETTER的选项,似乎也无法将其关闭。

如何在没有所有附加信息的情况下提取指令 - 仅预处理输出

是的,我可以通过命令行工具轻松解决这个问题,但我想让解决方案完全受限于编译器/ CMAKE。最后,我还想支持在Windows上构建。

0 个答案:

没有答案