使用SCons跨平台构建Boost

4

我尽力了,但是找不到一个使用SCons(或任何构建系统)在gcc和mvc++上同时使用boost库的示例。

目前我的SConstruct文件如下:

env = Environment()
env.Object(Glob('*.cpp'))
env.Program(target='test', source=Glob('*.o'), LIBS=['boost_filesystem-mt', 'boost_system-mt', 'boost_program_options-mt'])

这段代码在Linux上可以工作,但是在Visual C++上不行。从2010年开始,Visual C++不允许指定全局包含目录。


为什么不直接使用Boost附带的构建系统(bjam)呢? - Billy ONeal
@BillyONeal 这个问题是关于构建一个依赖于Boost的程序,而不是构建Boost本身的。问题标题有误导性。 - JBentley
1个回答

4
你需要类似以下的内容:

你需要像这样:

import os

env = Environment()
boost_prefix = ""
if is_windows:
  boost_prefix = "path_to_boost"
else:
  boost_prefix = "/usr" # or wherever you installed boost
sources = env.Glob("*.cpp")
env.Append(CPPPATH = [os.path.join(boost_prefix, "include")])
env.Append(LIBPATH = [os.path.join(boost_prefix, "lib")])
app = env.Program(target = "test", source = sources, LIBS = [...])
env.Default(app)

我理解了,我原本认为SCons对这个问题有更优雅的解决方案,但我想它只能做到这个程度。让人烦恼的是MSVC ++将自动链接依赖项,但Windows没有pkg-config。我不确定哪个更糟:需要显式链接指令的gcc工具链还是需要显式库路径的vc++。 - Novikov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接