【发布时间】:2012-09-30 13:36:42
【问题描述】:
我正在尝试链接来自 Jamfile 的 boost 库:
import os ;
path-constant BOOST_ROOT : [ os.environ BOOST_ROOT ] ;
use-project /boost : $(BOOST_ROOT) ;
exe hello :
hello.cpp
/boost//filesystem
/boost//system
:
<link>static
;
虽然我可以从控制台输出看到库已编译,但链接器输出错误:
msvc.link bin\msvc-10.0\debug\link-static\hello.exe
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc100-mt-gd-1_46.lib'
为什么会报错? 我是从 Jamfile 级别链接到库,那么为什么在应该链接的时候没有链接库呢?据我了解,如果整个构建过程由 Jamfiles 控制,则库应自动静态链接,并且不应添加特定于编译器的标志(因为它会使 Jamfiles 的可移植性降低)。请帮忙。
【问题讨论】:
-
您可能在使用 boost 的自动链接功能时遇到了问题。您可以通过定义
BOOST_ALL_NO_LIB来禁用它(我想将<define>BOOST_ALL_NO_LIB添加到目标hello的要求就足够了)。 -
哇。似乎工作!但是怎么做?如果我定义自己的库目标: lib foo : foo.cpp ;我链接它就像增强然后它起作用。那么为什么在通过 Jamfiles 链接时它不能与 boost 库一起使用?
-
另外,请把这个作为答案,以便我可以将其标记为答案并关闭线程。谢谢。
标签: boost bjam boost-build