python – Scons复制头文件来构建目录
我正在尝试使用scons将源目录中的多个头文件复制到我的构建目录中的’includes’目录.我的目标是一个静态库,我想将它与相关的标题一起分发.预期的最终结果:
build |-- objects -> .o output files for constructing libmclib.a |-- includes | |-- foo.h | `-- bar.h `-- libmclib.a 我的SConstruct: #!python target = 'mock' env = Environment(LINKCOM = "$LINK -o $TARGET $SOURCES $LINKFLAGS $CCFLAGS") Export('env','target') build_base = 'build' SConscript('SConscript',variant_dir=build_base,duplicate=0) # remove build directory if GetOption('clean'): import subprocess subprocess.call(['rm','-rf',build_base]) 我的SConscript: #!python Import('env') # ... # other stuff to build 'mclib_target' # ... def copy_header_files(target,source,env): Mkdir(target) header_files = [] for d in env['CPPPATH']: header_files += Glob(d + "/*.h") for f in header_files: Copy(target,f) # copy all relevant header files env.Command("includes",mclib_target,copy_header_files) Scons使用参数'[“build / includes”],[“build / libmclib.a”]’调用’copy_header_files’,但由于某种原因,’Mkdir’不会创建包含目录. “复制”似乎什么都不做.如果我这样称呼Mkdir: env.Command("includes",[Mkdir('$TARGET')]) 它似乎运作良好.如何解决/解决这个问题?我对Scons也很陌生,所以欢迎任何替代方案来完成这项任务.我正在使用scons 2.5.0. 解决方法
您可能希望使用“Install()”而不是“Copy()”.此外,Mkdir()不是必需的,SCons会自动为其目标创建所有中间文件夹.
最后,请允许我对您的一般方法发表一些评论:我宁愿不将“建筑”与“安装/准备包装”混在一起. “variant_dir”选项可以帮助您从相同的源文件构建多个“变体”(发布,优化,调试,特定于ARM,…)(假设您有一个名为“src”的文件夹).通过将当前“build”目录的名称传递到“src”SConscript中,您将特定于变体的知识嵌入到本地构建描述中,这意味着您必须使用您添加的每个变体来触摸它. 有关如何在SCons中处理变体的简单示例,请查看repo https://bitbucket.org/dirkbaechle/scons_talks以及“pyconde_2013 / examples / exvar”文件夹. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |