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", mclib_target, [Mkdir('$TARGET')])

似乎运作良好。如何解决/解决这个问题?我对Scons还是很陌生,因此欢迎您选择执行此任务的任何替代方法。我正在使用scons 2.5.0。

Dirkbaechle

您可能要使用“ Install()”代替“ Copy()”。同样Mkdir()不需要的是,SCons会自动为其目标创建所有中间文件夹。

最后,请允许我对您的一般方法提出一些意见:我不希望将“建筑”与“安装/准备包装”混在一起。variant_dir”选项可帮助您从相同的源文件(假设您有一个名为“ src”的文件夹)构建多个“变量”(发行版,优化版,调试版,特定于ARM的...)。通过将当前“构建”目录的名称传递到“ src” SConscript中,您会将特定于变体的知识嵌入到本地构建描述中,这意味着您必须将其与添加的每个变体联系起来。相反,您应该将“ Install/Package”步骤移至顶级SConstruct ...中,在那里您可以全面了解要构建哪些变体。distribution

有关如何在SCons中正确处理变体的简单示例,请访问repo https://bitbucket.org/dirkbaechle/scons_talks并在其中存在“ pyconde_2013/examples/exvar”文件夹。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用Qt编译项目后将文件复制到构建目录

来自分类Dev

automake:如何将文件复制到构建目录?

来自分类Dev

使用子目录中的include构建Scons

来自分类Dev

Scons-Fortran文件的构建顺序

来自分类Dev

如何告诉scons从构建缓存中排除某些文件

来自分类Dev

从几个目录复制文件

来自分类Dev

Boost构建中缺少头文件

来自分类Dev

Xcode C ++头文件目录

来自分类Dev

将exe文件复制到Qt构建目录

来自分类Dev

如何在特定位置使用Maven作为后构建或预构建来复制文件和目录?

来自分类Dev

Gulp复制目录和文件

来自分类Dev

早午餐构建工具:资产目录中的子文件夹未复制?

来自分类Dev

尝试构建Skia时缺少头文件

来自分类Dev

查找并复制文件和目录

来自分类Dev

介子复制/安装头文件到输出目录并保持文件夹结构

来自分类Dev

使用vs19中的后期构建执行自动复制目录的每个文件

来自分类Dev

如何从多个目录复制文件?

来自分类Dev

复制文件到目录

来自分类Dev

用Qt编译项目后将文件复制到构建目录

来自分类Dev

Boost构建中缺少头文件

来自分类Dev

将html文件从源目录复制到构建目录

来自分类Dev

Ant仅复制文件而不复制目录

来自分类Dev

将exe文件复制到Qt构建目录

来自分类Dev

dpkg dh_install:从构建目录中复制文件,而不是从debian / tmp目录复制文件吗?

来自分类Dev

早午餐构建工具:资产目录中的子文件夹未复制?

来自分类Dev

通过 Gradle 将文件复制到构建目录

来自分类Dev

Maven 在构建期间复制到 Java 资源目录时会损坏 WAV 文件

来自分类Dev

g++ 在头文件中包含目录

来自分类Dev

cmake:添加要搜索头文件的目录

Related 相关文章

热门标签

归档