【问题标题】:SCons copying program after compilation to parent directorySCons编译后将程序复制到父目录
【发布时间】:2012-06-16 10:17:26
【问题描述】:

我正在尝试自动编译后将生成的程序文件复制到父目录。

我试过了,但这不起作用。

env.Program( "program_name", [ "file1.cc", "file2.cc" ] )
Copy( "../program_name", "program_name" )

如何使用 SCons 做到这一点?

【问题讨论】:

    标签: c++ build makefile scons


    【解决方案1】:

    更好的方法是使用目标和 Command() 构建器,如下所示:

    prgTarget = env.Program( "program_name", [ "file1.cc", "file2.cc" ] )
    Command(target = "../program_name",
            source = prgTarget,
            action = Copy("$TARGET", "$SOURCE"))
    

    或者根据情况,使用Install() builder,像这样:

    prgTarget = env.Program( "program_name", [ "file1.cc", "file2.cc" ] )
    Install("../program_name", source = prgTarget)
    

    【讨论】:

    • +1 这对于安装构建器来说听起来不错。使用命令生成器听起来像是使代码复杂化。你知道命令构建有什么优势的任何情况吗?
    • @daramarak,Command() 构建器更加灵活,因为它可以是任何命令,如脚本等。Install() 构建器仅用于“安装”(复制)一个或多个文件/目标。
    • 我知道命令构建器很灵活,但我想知道在某些情况下是否应该首选命令构建器而不是安装构建器来复制文件?
    • @daramarak,我想不出来,这并不意味着没有:) 使用 Command() 可以更改名称,使用 Install() 则不能。但是您可以改用 InstallAs() 更改名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多