python – Scons复制头文件来构建目录

python – Scons复制头文件来构建目录,第1张

概述我正在尝试使用scons将源目录中的多个头文件复制到我的构建目录中的’includes’目录.我的目标是一个静态库,我想将它与相关的标题一起分发.预期的最终结果: build|-- objects -> .o output files for constructing libmclib.a|-- includes| |-- foo.h| `-- bar.h`-- libmclib 我正在尝试使用scons将源目录中的多个头文件复制到我的构建目录中的’includes’目录.我的目标是一个静态库,我想将它与相关的标题一起分发.预期的最终结果:

build|-- objects -> .o output files for constructing libmclib.a|-- includes|   |-- foo.h|   `-- bar.h`-- libmclib.a

我的SConstruct:

#!pythontarget = '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 directoryif Getoption('clean'):    import subprocess    subprocess.call(['rm','-rf',build_base])

我的sconscript:

#!pythonimport('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 filesenv.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中,您将特定于变体的知识嵌入到本地构建描述中,这意味着您必须使用您添加的每个变体来触摸它.
相反,您应该将“安装/打包”步骤移动到顶级SConstruct中……在那里您可以全面了解构建哪些变体.从那里你可以将最终文件复制(=安装)到一个单独的子文件夹,例如分发,并存档一个而不是.

有关如何在SCons中处理变体的简单示例,请查看repo https://bitbucket.org/dirkbaechle/scons_talks以及“pyconde_2013 / examples / exvar”文件夹.

总结

以上是内存溢出为你收集整理的python – Scons复制头文件来构建目录全部内容,希望文章能够帮你解决python – Scons复制头文件来构建目录所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存