最近无聊,看看Boost里有啥好东西,翻到了Wave库,发现有个趣的东西,Wave库自身就是为C++的预处理而设计的,其中Wave库的例子里面有一个用Wave实现的C++的预处理器,这是个好东西,可以用命令行进行C++的预处理了。这个例子不再boost/wave里面,而是%boost_Root%/tools/wave里面的所有文件,把它拷贝到VS的一个命令行Exe的工程里面,直接编译即可。
偶编译成了一个wave.exe。下面需要一些设置就可以用他进行预处理了。
wave.exe支持一个配置文件和命令,首先需要写一个配置文件:
test.cfg文件内容:
###########test.cfg文件内容:################################
#一个时间记录看看wave处理需要的时间,可有可无
--timer
#System Path这个很重要下面-S后的是我的VC++的和windos sdk的include目录;-I是项目的include目录,根据你的情况修改
-S"C:/Program Files/Microsoft SDKs/Windows/v6.0A/Include"
-S"C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/include"
-S"E:/Dev_Libs/lib_scr/boost_1_44_0"
-I"C:/Users/Aquarius/Documents/Visual Studio 2008/Projects/Wave/Wave/testfiles/Xavier"
#AUTO OUTPUT -E是自动生成“.i”的预处理文件(就是把你的XXX.cpp源文件处理后的结果放在一个XXX.i的文件里面)
-E
#C++1999标准的支持
--c99
#生成几个txt文件记录预处理过程中生成的宏,include的头文件等
-g g_o.txt
-c c_o.txt
-l l_o.txt
-m m_o.txt
-t t_o.txt
#-P是预定义几个宏,我是用wave模拟VC++2008 所以要有几个VC的预定义宏
#不知道你的编译器需要哪些预定义宏的可以参考http://predef.sourceforge.net/index.php
#预定义宏很重要,设置不好预处理会通不过
-P __cplusplus=199901L
-P __cplusplus_cli=200406L
-P _WINDOWS
-P _WIN32
-P WIN32
-P _DEBUG
-P _M_IX86=400
-P _MSC_VER=1500
-P _MSC_FULL_VER=150021022
############test.cfg文件内容:#################################
还要一个windows的批处理文件 test.bat 来运行wave
:::::::::test.bat :::::::::::::::
@echo off
::显示wave版本
wave.exe -v
::@test.cfg 是告诉wave配置文件名(配置文件前腰加@) 后面Xavier/tree/xtree_node.cpp
::是我的一个源文件的路径,这个自己改
wave.exe @test.cfg Xavier/tree/xtree_node.cpp
@pause
:::::::::test.bat :::::::::::::::
好了吧wave.exe test.cfg test.bat 和你要处理的源文件放在一个目录里,运行test.bat就OK了