近日下载了一个VC2005 Express Edition,用它来编译boost,发现有不少的warning C4819,说代码文件中有cp936无法表示的字符,还有就是vc2005特有的废弃的ANSI函数的错误,虽说不影响编译,但是看着时不时出现的warning总是让人心神不安,还容易掩盖其他的错误,如果是直接用cl编译,只要加上/wd4819 /D_CRT_SECURE_NO_DEPRECATE就可以不显示这两个错误,但是大家都知道boost是使用其特有的boost.build进行编译的,下面我就给出如何修改boost.build来抑制这两个错误的显示
boost.build分为v1和v2两个版本
v1:
修改$(BOOST_ROOT)/tools/build/v1/vc-8_0-tools.jam
将
flags vc
-
8_0 C
++
FLAGS :
/
Zc:forScope ;
改为
flags vc
-
8_0 C
++
FLAGS :
/
Zc:forScope
/
wd4819
/
D_CRT_SECURE_NO_DEPRECATE ;
v2:
cvs版本
修改$(BOOST_ROOT)/tools/build/v2/tools/msvc.jam
在
#
8.0
adds some more options
一行的下方加上
flags msvc.compile CFLAGS $(condition) :
/
wd4819
/
D_CRT_SECURE_NO_DEPRECATE ;
boost 1.33.1版本
将
#
8.0
deprecates some of the options
if
!
[ MATCH
^
([
67
].
*
) : $(version) ]
{
flags msvc.compile CFLAGS $(condition)
/<
optimization
>
speed :
/
O2 ;
flags msvc.compile CFLAGS $(condition)
/<
optimization
>
space :
/
O1 ;
flags msvc.link.dll MANIFEST :
"
mt -manifest
"
;
flags msvc.link.dll OUTPUTRESOURCE :
"
-outputresource:
"
;
}
改为:
#
8.0
deprecates some of the options
if
!
[ MATCH
^
([
67
].
*
) : $(version) ]
{
flags msvc.compile CFLAGS $(condition) :
/
wd4819
/
D_CRT_SECURE_NO_DEPRECATE ;
flags msvc.compile CFLAGS $(condition)
/<
optimization
>
speed :
/
O2 ;
flags msvc.compile CFLAGS $(condition)
/<
optimization
>
space :
/
O1 ;
flags msvc.link.dll MANIFEST :
"
mt -manifest
"
;
flags msvc.link.dll OUTPUTRESOURCE :
"
-outputresource:
"
;
}