当我想在Linux平台上复制文件时,使用这个SConstruct文件:
Command('/lib64/'+ tbbLibNames[i] , tbb_dylibs + '/' + tbbLibNames[i], Copy("$TARGET", "$SOURCE"))它不会生效。但是当我将命令移到SConscript时,它就会生效。
请告诉我为什么。
发布于 2021-09-27 16:43:26
因为您的目标在/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 Action添加到构建这些tbbLibNames的任何地方。通过AddPostAction()
请参阅:https://scons.org/doc/production/HTML/scons-man.html#f-AddPostAction
https://stackoverflow.com/questions/69332729
复制相似问题