【发布时间】:2020-10-27 01:24:28
【问题描述】:
一个文件夹中有多个c语言文件。我不想每次都编译所有的 c 文件。我写了一个结构。我想使用一些选项来控制编译哪个文件。
import os
import sys
input = sys.argv
env = Environment(CC = 'gcc')
env.Program('testC','cExample.c')
以上代码可以正常执行。但是下面的代码显示了 scons:当我使用 scons cExample.c 时,没有什么可以为 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 未成功编译。
【问题讨论】:
-
与问题无关:不要使用
input作为变量,它是一个内置函数的名称。 -
那我应该如何获取scons设置的选项。例如,scons cExample.c。如何在 Sconstruct 中获取 cExamplec.c。我只知道 sys.argv[1]。
-
只需给变量一个不同的名称。或者根本不使用变量:
if 'cExample.c' in sys.argv: -
就像我说的,这与您遇到的问题无关,这只是编写 Python 脚本的一般要点:不要使用内置函数的名称作为变量名。
-
修改后问题依然存在。如问题中所写