0

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

我使用 CMake 作为构建系统生成器,如何指定我的预处理器是 boost.wave。这应该适用于 Windows (MSVC) 和 linux (gcc)。

谷歌搜索和搜索 Stack Overflow 档案没有得到任何答案


编译器无论如何都会预处理文件。所以看起来这里涉及到两个预处理步骤。

4

1 回答 1

2

这是一个两步过程。

首先,您必须告诉 CMake 使用 Wave 作为自定义命令:使用 CMake 的add_custom_command. 一旦你定义了这个命令,只要你为自定义命令指定的依赖项匹配,它就会被调用。

其次,您必须弄清楚所有预定义的宏和(系统)包含编译器通常使用的路径。Wave 对特定的编译器一无所知。因此,为了为特定编译器正确预处理文件,所有(相关)预定义宏(通常由编译器预定义)和所有系统包含路径(通常默认情况下编译器已知)需要在调用时传递海浪。如果将所有这些选项放到 Wave 的命令行上太乏味(而且很可能是这样),您可以为 Wave 创建一个选项文件(使用 将其添加到命令行@cfgfile)。以下是 MSVC 2005 的示例:

-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

当然,您也可以在此处为 Wave 添加其他选项。为不同的编译器提供不同的配置文件应该更容易从 CMake 内部进行管理。

于 2010-12-10T13:46:13.653 回答