【问题标题】:Crossplatform building Boost with SCons使用 SCons 进行跨平台构建 Boost
【发布时间】:2010-09-15 19:30:25
【问题描述】:

我很努力,但找不到使用 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 年开始不允许您指定全局包含目录。

【问题讨论】:

  • 为什么不直接使用boost自带的构建系统(bjam)?
  • @BillyONeal 问题是关于构建一个依赖于 Boost 的程序,而不是构建 Boost 本身。问题标题具有误导性。

标签: c++ boost build scons


【解决方案1】:

你需要这样的东西:

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++ 需要显式库路径。
猜你喜欢
  • 2016-01-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
相关资源
最近更新 更多