SCons:调用Makefile项目的构建

3
SCons提供了env.Command方法,理论上应该能够在一个Makefile项目中调用"./configure"和"make"。但是,我的理解是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

0
作为对@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。这曾经让我头疼不已。


1
如果你想从你的shell传播路径,那么导入os。call_vars['PATH']= os.environ['PATH'] - bdbaddog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接