基本上,我想做标题所说的内容。
我有一些稍微复杂的头文件,我想生成一个我可以作为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上构建。