C++ 通过SCON促进跨平台建设

C++ 通过SCON促进跨平台建设,c++,boost,build,scons,C++,Boost,Build,Scons,我很努力,但找不到一个使用SCON(或任何构建系统)在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上工作,

我很努力,但找不到一个使用SCON(或任何构建系统)在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开始,不允许指定全局包含目录。

,你需要一些类似的东西:

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)

为什么不使用boost附带的构建系统(bjam)?@BillyONeal问题在于构建一个依赖于boost的程序,而不是构建boost本身。问题的标题是误导性的。我明白了,我认为SCons对这个问题有一个更优雅的解决方案,但我想它只能做这么多。令人恼火的是,MSVC++将自动链接依赖项,但windows没有pkg配置。我不确定哪一个更糟糕,gcc工具链需要显式链接指令,还是vc++需要显式库路径。