我试图使用boost.wave作为预处理器,而不是附带的编译器的预处理器。我无法弄清楚如何实现这一目标。

我使用的CMake作为构建系统生成,我怎么可以指定我的预处理器boost.wave。这应该是在Windows(MSVC)和Linux(GCC)的工作。

谷歌搜索和搜索堆栈溢出档案没有产生任何应答


编译器将反正预处理文件。所以它看起来像预处理的两步这里所涉及的。

有帮助吗?

解决方案

这是一个两步过程。

首先,你必须告诉CMake的使用波作为自定义命令:使用CMake的的的 add_custom_command 。一旦定义了这个命令无论何时自定义命令指定的依赖性相匹配,将被调用。

其次,你必须弄清楚所有预定义宏和(系统),包括编译器normaly使用路径。波不知道具体的编译器什么。因此,为了正确地进行预处理文件为特定的编译所有(相关)预定义的宏(其通常由编译器预定义)和所有系统包括路径(其通常已知的编译器默认情况下)需要被同时调用传递波。如果把所有的这些选项在Wave的命令行太乏味(很可能是),你可以创建一个的为波选项文件(其添加到与所述@cfgfile命令行)。这里是2005年MSVC的示例:

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include
-D_MT
-D_MSC_VER=1400
-D_MSC_FULL_VER=140050727
-D_MSC_EXTENSIONS
-D_M_IX86

当然,你可以添加其他选项进行地震波在这里。对于不同的编译器不同的配置文件应该更容易从内部管理的CMake

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top