Env

求教:关于scons构建rtt时的两个问题

发布于 2017-09-30 10:47:59
1. 在cygwin环境下,未安装VS,scons总会警告

“scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly”


请问群里的大神们,scons在windows下一定检测VS吗,如何能去掉该警告?

2. 关于rtconfig.POST_ACTION,在EndBuilding阶段想完成的操作是否都可以加到该变量上?我想在POST_ACTION上加上objdump操作:
“POST_ACTION += OBJDUMP + ' -D $TARGET > rtt.asm
'”

结果报错如下:
arm-none-eabi-objdump: Warning: '>' is not an ordinary file
arm-none-eabi-objdump: rtt.asm: File format not recognized

有大神能给解释下原因吗?

感激不尽~~

查看更多

关注者
0
被浏览
1.5k
5 个回答
aozima
aozima 2017-09-30
scons借助VC或GCC来识别头文件等变化,如果没有,编辑.c以外的文件,可能不能被正常识别,而不会重新编译。
可以不用管这个,如果怀疑有文件没编译, scons -c 清除后再重新编译一次即可。
aozima
aozima 2017-09-30
第2个问题应该是python的命令行执行把所有字符串强制解析为参数了。
而不是交给OS的命令行去解析,所以 > 没有解析为输出重定向,而是一个字符串

可以考虑手动执行这个命令,毕竟反汇编输出一次也非常慢。
lattner
lattner 2017-09-30
scons借助VC或GCC来识别头文件等变化,如果没有,编辑.c以外的文件,可能不能被正常识别,而不会重新编译。
可以不用管这个,如果怀疑有文件没编译, scons -c 清除后再重新编译一次即可。


非常感谢您的帮助。我还有个问题,如果只是对工具链的依赖,我们构建时都指定了gcc作为交叉编译工具链(通过设置CROSS_TOOL),为什么还要去找VS呢,是不是我还有什么地方没有进行相应的设置?我对scons和Python都不熟,如果您知道,请不吝赐教,多谢多谢。
lattner
lattner 2017-09-30
第2个问题应该是python的命令行执行把所有字符串强制解析为参数了。
而不是交给OS的命令行去解析,所以 > 没有解析为输出重定向,而是一个字符串

可以考虑手动执行这个命令,毕竟反汇编输出一次也非常慢。


谢谢,您的解释我很认同。在scons源码里面,pre_actions,post_actions都会被加到action_list里面,一个个执行,在Executor.py中有如下代码佐证您的想法。再次表示感谢
def execute_action_list(obj, target, kw):
"""Actually execute the action list."""
env = obj.get_build_env()
kw = obj.get_kw(kw)
status = 0
for act in obj.get_action_list():
args = ([], [], env)
status = act(*args, **kw)
if isinstance(status, SCons.Errors.BuildError):
status.executor = obj
raise status
elif status:
msg = "Error %s" % status
raise SCons.Errors.BuildError(
errstr=msg,
node=obj.batches[0].targets,
executor=obj,
action=act)
return status

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友