2010-04-07 2 views
3

Я пытаюсь использовать SCons для создания части программного обеспечения, которая зависит от библиотеки, доступной в источниках, которые установлены в системе. Например, в /usr/share/somewhere/src. *.cpp в этом каталоге должен быть встроен в статическую библиотеку и связан с моим собственным кодом. В библиотечных источниках нет SConscript.Создание внешних деревьев кода с помощью SCons

Поскольку библиотека находится в системном каталоге, я не имею никаких прав и не хочу ставить артефакты сборки где-то под /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?

ответ

3

Чтобы сделать это, вы можете использовать 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") 
+0

Похоже, что репозитории - это то, что мне нужно. Я думал, что они каким-то образом связаны с VCS. Плохое имя :) – nkrkv

Смежные вопросы