SCons: вызвать сборку проекта Makefile - PullRequest
2 голосов
/ 08 сентября 2011

SCons предоставляет команду env.Command, которая теоретически должна иметь возможность вызывать . / Configure и make в проекте Makefile. Однако я понимаю, что сначала нужно скопировать папку проекта Makefile в каталог сборки SCons, поскольку процесс сборки не должен ничего менять в дереве исходных текстов. Как это можно сделать?

Я думаю, что я ищу что-то вроде этого:

env.Command('lib/moo/Makefile', '', [Copy('BUILD_DIR/lib/moo', 'SOURCE_DIR/lib/moo', 'cd BUILD_DIR/lib/moo', './configure'])

Хотя я подозреваю, что есть лучший способ сделать это. Кроме того, что будет вместо BUILD_DIR и SOURCE_DIR в приведенной выше команде?

Спасибо: -)

Ответы [ 2 ]

4 голосов
/ 09 сентября 2011

Есть несколько рецептов для этого в SCons Wiki.Возможно, один из них подойдет для ваших нужд:

0 голосов
/ 30 июня 2016

В качестве дополнения к @kichik. Если вы хотите только запустить make, добавьте в файл SConscript следующее:

 call_vars = {}
 call_vars['PATH'] = '/bin/:/usr/bin/'                                    
 artifacts = env.Make(target = 'Config.jason', source = None,
     MakeTargets = "clean all",                 
     MakePath = Dir('./'), MakeOpts = [], MakeEnv=call_vars)
 env.AlwaysBuild(artifacts)

Это вызывает сценарий, описанный здесь https://bitbucket.org/scons/scons/wiki/MakeBuilder

Обратите внимание, что переменные среды могут отличаться от ожидаемых, например, PATH. Это вызвало у меня головную боль.

...