首页 > 解决方案 > 在 SConstruct 中运行复制命令不起作用

问题描述

当我想在 Linux 平台上复制文件时,使用这个 SConstruct 文件:

Command('/lib64/'+ tbbLibNames[i] , tbb_dylibs + '/' + tbbLibNames[i], Copy("$TARGET", "$SOURCE"))

它没有生效。但是当我将命令移动到 SConscript 时,它就会生效。

请告诉我为什么。

标签: linuxscons

解决方案


由于您的目标在/lib64/运行 scons 时不在当前目录(很可能)下(子目录),因此默认情况下不会构建它。

如果您未在 scons 命令行上指定目标,则默认目标是.

所以尝试以下方法: scons /lib64

那应该行得通。

此外,如果您希望默认构建该目标(当您没有在命令行上明确指定目标时(如上),您可以使用以下

targets = Command('/lib64/'+ tbbLibNames[i] , tbb_dylibs + '/' + tbbLibNames[i], Copy("$TARGET", "$SOURCE"))
Default(targets)

我猜根据复制目标的位置,您可能希望有一个名为install

如果是这样,您可以执行以下操作

targets = Command('/lib64/'+ tbbLibNames[i] , tbb_dylibs + '/' + tbbLibNames[i], Copy("$TARGET", "$SOURCE"))
Alias('install',targets)

然后你会导致 scons 通过 scons install

另一种选择是将上面的 Copy() 作为发布操作添加到构建这些 tbbLibNames 的任何内容中。AddPostAction()

请参阅:https ://scons.org/doc/production/HTML/scons-man.html#f-AddPostAction


推荐阅读