我需要将-Werror添加到已经存在的(导出的?)建造的CFLAGS。现在,我只是尝试提取CFLAGS所持有的数据。我是超级新的制作和Makefiles,但必须添加一些预先存在的构建文件。
假设我在像这样的makefile中有一个目标
.PHONY: add_errors
add_errors:
@flags=$(CFLAGS);\
echo $$flags;\但问题是,CFLAGS是一个非常大的字符串,有许多选项集。执行makefile时,我得到以下错误
/bin/sh: 1: -marm: not found
make[2]: *** [add_errors] Error 127它看起来像是以第一个空格作为字符串,然后丢弃其余的字符串。
在CFLAGS内部,文本的一个片段是
-march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s --sysroot=/opt/dspg/v2.11-rc2/sysroots/cortexa9-neon-dspg-linux-gnueabi -Wno-psabi -ggdb -I/opt/dspg/v2.11-rc2/sysroots/cortexa9-neon-dspg-linux-gnueabi/usr/include/libxml2我能做什么?
发布于 2021-01-28 17:53:15
您应该问一个与您真正想要做的事情有关的问题,包括代码的相关部分。您给出的这个示例对任何事情都没有用,所以我们给出的答案可能实际上不会对您有所帮助,但是:
我给您的第一个建议是不要在菜谱上使用@前缀。或者,在makefile已经100%正确工作之前,至少不要使用它们。压制make的输出就像蒙住眼睛时尝试调试一样。
这个问题与make一点关系都没有,真的:它只是shell引用规则。
如果您删除@并查看什么是make打印,您将看到它正在运行以下命令:
flags=-march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s ...; echo $flags;如果你剪切并粘贴到你的外壳,你会得到完全相同的错误。
这是因为shell命令foo=bar biz baz意味着将环境变量foo设置为值bar,然后使用参数baz运行biz命令。
您需要添加引用,以便shell将所有参数放入flags变量中:
.PHONY: add_errors
add_errors:
@flags='$(CFLAGS)';\
echo $$flags;\将导致make运行以下命令:
flags='-march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s ...'; echo $flags;https://stackoverflow.com/questions/65942288
复制相似问题