VS03配置boost,编译build.bat错误问题

mydaisy 2007-03-11 10:32:06
问个Boost库的弱智问题哈!我在VS03安装boost的时候步骤如下:
1、下载 boost_v1_33_1 库,解压缩到 D:\boost_1_33_1 目录下。我的VS装在E:\VS2003
2、从开始菜单运行“Visual Studio .NET 2003 命令提示”。
3、在打开的命令窗口中转到“D:\boost_1_33_1\tools\build\jam_src”下,运行“build.bat”。
这里出现错误,候说“无法打开源文件 ”yyacc.c“
也按照http://shorego.spaces.live.com/blog/cns!e5ca13af09eb9a99!188.entry所说的修改“D:\boost_1_33_1\tools\build\jam_src\build.bat”中的所有:
“C:\Program Files\Microsoft Visual Studio .NET 2003”为“E:\VS2003”,也就是VS2003的安装目录。还是出现上面的情况!多谢哈!UP有分哈
...全文
763 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mydaisy 2007-03-14
  • 打赏
  • 举报
回复
问题已解决,单独编译成功的
To:roger_77(roger007-阿生) ( ) 信誉:100 Blog
我添加了 borland, como, gcc, gcc-nocygwin, intel-win32, metrowerks, mingw, msvc, vc7等,还是不行,估计是版本问题吧
不过谢谢各位了哈!
roger_77 2007-03-12
  • 打赏
  • 举报
回复
怎么不看提示呢?
====================================
C:\Documents and Settings\dailei>cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32
.lib advapi32.lib /Febootstrap\yyacc0 yyacc.c
yyacc.c
c1 : fatal error C1083: 无法打开源文件:“yyacc.c”: No such file or directory
###
### "Could not find Yacc to build the Jam grammar."
###
### You can specify the toolset as the argument, i.e.:
### .\build.bat msvc
###
### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, int
el-win32, metrowerks, mingw, msvc, vc7
###

=========================================

你应该在build.bat 命令后面加上编译器参数:
build.bat vc7







taodm 2007-03-12
  • 打赏
  • 举报
回复
vs2003问题太多,建议你换vs2005,并且打好sp1。
mydaisy 2007-03-12
  • 打赏
  • 举报
回复
还是没办法……和原来出现的问题一样
我重装下VS03算了……
mydaisy 2007-03-12
  • 打赏
  • 举报
回复
多些星辰老大,马上试哈
jixingzhong 2007-03-12
  • 打赏
  • 举报
回复
更多细节内容,
请看:

Boost库安装配置
http://www.yuanma.org/data/2006/0625/article_934.htm
jixingzhong 2007-03-12
  • 打赏
  • 举报
回复
Visual studio .net 2003使用boost库的配置
楼主roger_77(roger007-阿生)2005-11-17 14:28:42 在 C/C++ / C++ 语言 提问

最近在工作中要使用VS.net2003,并在其中使用boost库,
但网上有关这方面的资料不是很多,或者都不够详细.
下面是本人根据网上的一些资料,并结合自己的实际情况得到的经验,
希望对大家有所帮忙,避免大家少走弯路.

一般需要的下面四个步骤,一个是产生Jam.exe文件,配置系统的环境变量,然后是编译boost

库,特别是著名的thread库,最后是在Visual studio.net2003中的配置项目属性。

一、先来编译Jam,这是我们可以继续的一个先决条件:
编译之前,有些问题需要你注意,主要是安装路径和编译器的问题,这里你需要查看两个文件



?\boost_1_30_0\tools\build\jam_src\build.bat

?\boost_1_30_0\tools\build\jam_src\build.jam

对于build.bat的问题是路径问题:

"%ProgramFiles%\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT"

批处理文件是依据这样的判断来寻找VC++的编译器和判断你开发工具的版本,而我的VC安装在

这样的目录中D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7结果一定会使得它

无法找到编译器,这时你有两个选择,第一是修改build.bat中的路径;第二是设置SET

BOOST_JAM_TOOLSET=vc7,SET BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual

Studio .NET 2003\VC7\ ;

即是把build.bat文件中所有的
%ProgramFiles%\Microsoft Visual Studio .NET 2003\
改为
你机器上Microsoft Visual Studio .NET 2003的安装目录.比如是:
D:\ProgramFiles\Microsoft Visual Studio .NET 2003\或D:\vs2003\等


对于build.jam 的问题.
是cl的参数问题,新版本的cl不支持 /LIBPATH: xxxx的方式,解决这个问题的办法是去掉

build.jam文件中对这个参数的使用,并且保证你已经设置了INCLUDE和LIB的环境变量.
最简单的办法是执行?\Microsoft Visual Studio .NET 2003\Vc7\bin\vsvars32.bat
或 ?\Microsoft Visual Studio .NET 2003\Common7\Tools\vcvars32.bat。


完成之后,你只用执行?\boost_1_30_0\tools\build\jam_src\build.bat即可,如果没有问题

你可以在C:\boost_1_30_0\tools\build\jam_src\bin.ntx86看到编译的结果,
并且在?\boost_1_30_0\tools\build\jam_src目录下产生很多新文件.
最后把目录中的jam.exe文件COPY到boost的根目录下.


二、然后设置系统的环境变量:
1.在path中添加:
(1).boost库的根目录:?\boost_1_30_0;
(2).bluild运行后产生的目录:?\boost_1_30_0\tools\build\jam_src\bin.ntx86;
2.添加环境变量
MSVC_ROOT="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

VC7_ROOT="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

VISUALC="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

JAM_TOOLSET=VISUALC


三、上面的步骤都正确做好后,最后就是真正编译boost库,
运行jam命令:
jam -sBOOST_ROOT=. -sTOOLS=vc7 "-sBUILD=debug release

<runtime-link>static/dynamic"

这需要编译很长一段时间,一般都要20多分钟才能完成.
编译完成后在?\boost_1_30_0\bin目录下产生了很多新目录及文件,这就是编译的成果.
为了以后在项目中配置方便,把编译出来的*.lib,*.dll文件搜索出来后,
把这些文件统一放到一个自己新建的目录下,比如libs_net目录。


四、在vs.net2003的项目中配置boost库的路径:
在visual studio .net2003 开发环境下,
选择菜单"项目" -> "属性",出来的对话框中,
1.先选择"C/C++",然后在其下面的 "常规"项的"附加包含目录"中填上“boost库的根目录”.
如果项目中程序中使用到了thread多线程库,则在“命令行” 的"附加选项"中添加上

"MTd"或者其它的运行多线程需要的参数.
2.然后在对话框中再选择"链接器"->"常规"->"附加库目录",
在这个选项中填入"编译boost库文件目录",比如前面的"libs_net"目录.

注意:
编译boost产生的库文件名不一定跟你的VC编译器完全相同,可能出来的是VC7的文件名,但在

vc.net2003编译项目时,却要求是vc71的文件名,这时只要把lib的库文件名改一下就OK了.
比如我们编译得到的是"libboost_thread-vc7-mt-sgd-1_32.lib"文件,
在VS.net2003编译thread的项目时,却提示打不开"libboost_thread-vc71-mt-sgd-1_32.lib"

文件,那我们只要把文件名改为要求的文件名即可.


boost的许多库是都是通过Include方式来使用的,不用你事先编译,真正编译完成你会发现,

如果你使用这些库,是需要自己进行编译的.

只有下面的库是要事先编译的:
Date_time/filesystem/graph/python/regex/signals/test/thread

对应的应该是Date-Time Library/File System Library/Graph Library/Python

Library/Regx Library/Signals Library/Test Library/Thread Library



所以往往说编译通过,只指编译这些库文件成功,但这并不意味Visual C++.NET 7.1就完全遵

循Boost Library或可以完全使用Boost Library中的所有功能,你会发现有些函数和模块在不

同程度存在编译或是运行的问题。当然这不仅是VC7.1,几乎所有主流的C++编译器都会这样的

问题。
taodm 2007-03-12
  • 打赏
  • 举报
回复
不要那么麻烦了。boost常用库里只regex需要编译。thread库什么的一般也不会去用的。
你在regex目录里单独编译一下即可。
mydaisy 2007-03-12
  • 打赏
  • 举报
回复
莫有人回答么?
UP!
mydaisy 2007-03-11
  • 打赏
  • 举报
回复
运行build.bat之后的信息:
C:\Documents and Settings\dailei>D:\boost\tools\build\jam_src\build.bat
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
(If you have another version of Visual Studio or Visual C++ installed and wish
to use its tools from the command line, run vcvars32.bat for that version.)
###
### Using 'vc7' toolset.
###

C:\Documents and Settings\dailei>rd /S /Q bootstrap

C:\Documents and Settings\dailei>md bootstrap

C:\Documents and Settings\dailei>cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32
.lib advapi32.lib /Febootstrap\yyacc0 yyacc.c
yyacc.c
c1 : fatal error C1083: 无法打开源文件:“yyacc.c”: No such file or directory
###
### "Could not find Yacc to build the Jam grammar."
###
### You can specify the toolset as the argument, i.e.:
### .\build.bat msvc
###
### Toolsets supported by this script are: borland, como, gcc, gcc-nocygwin, int
el-win32, metrowerks, mingw, msvc, vc7
###

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧