代码之家  ›  专栏  ›  技术社区  ›  nkrkv

用scons构建外部代码树

  •  3
  • nkrkv  · 技术社区  · 14 年前

    我正在尝试使用scons构建一个依赖于系统中安装的源中可用的库的软件。例如在 /usr/share/somewhere/src . *.cpp 在那个目录中,应该构建到静态库中并与我自己的代码链接。图书馆资源没有 SConscript 其中。

    因为库在系统目录中,所以我没有权限,也不想将构建工件放在 /usr . /tmp .build 在当前工作目录中正常。我怀疑这很容易做到,但我已经被这些事情缠住了。 SConscripts VariantDirs .

    env = Environment()
    my_things = env.SConscript('src/SConsctipt', variant_dir='.build/my_things')
    sys_lib = env.SConscript(????)
    result = env.Program('result', [my_things, sys_lib])
    

    用什么方法来解决scons的问题?

    1 回复  |  直到 14 年前
        1
  •  3
  •   richq luc    14 年前

    你可以用一个 Repository 这样做。例如,在您的sconstruct中,您可以编写:

    sys_lib = env.SConscript("external.scons", variant_dir=".build/external")
    

    然后在 external.scons 文件(在源树中),您可以添加到外部源树的路径以及如何在其中构建库。

    env = Environment()
    env.Repository("/usr/share/somewhere/src")
    lib = env.Library("library_name", Glob("*.cpp"))
    Return("lib")