运行 SConstruct 中的复制命令无效

Running copy command in SConstruct doesn't effect

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

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

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

请告诉我为什么。

由于您的目标位于 /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() 作为 Post 操作添加到构建那些 tbbLibNames 的任何内容中.. 通过 AddPostAction()

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