如何解决为什么Sconstruct中的某些python语句不执行?
一个文件夹中有多个c语言文件。我不想每次都编译所有c文件。我写了一个Sconstruct。我想使用一些选项来控制编译哪个文件。
import os
import sys
input = sys.argv
env = Environment(CC = 'gcc')
env.Program('testC','cExample.c')
以上代码可以正常执行。但是以下代码显示了错误:我使用cExample.c
时scons cExample.c
不需要做任何事情。未生成testC文件。我进行了测试,发现它确实输入了if语句
import os
import sys
env = Environment(CC = 'gcc')
# env.Program('testC','cExample.c')
if 'cExample.c' in sys.argv:
print('here')
env.Program('testC','cExample.c')
它仍然显示
scons: nothing to be done for `cExample.c'.
scons: done building targets.
对不起您没有解释清楚。这段代码写在一个Sconstruct文件中。它的功能类似于MakeFile文件。句子env.Program('testC','cExample.c')是将cExample.c编译成一个testC可执行文件。如果将env.Program('testC','cExample.c')放在if外部(如注释的第四行),则cExample.c可以正常编译,如果它位于if内部(如现在所示),则cExample .c未成功编译。
解决方法
如果您输入:
scons cExample.c
假设未生成文件,而只是坐在磁盘上,SCons当然会说
scons: Nothing to be done for `cExample.c'.
从cExample.c构建的文件将是cExample.o(或为对象设置的.obj或其他后缀)。
所以:
scons cExample.o
将指示SCons仅构建该文件。
使用SConstruct作为
env = Environment(CC = 'gcc')
my_obj = env.Object('cExample.c')
env.Alias('myobject',my_obj)
env.Program('testC',my_obj)
然后您可以运行
scons myobject
那只会编译您的.c-> .o
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。