我坚持在Makefile中的for循环中连接一个变量
我有一个变量,其中包含头文件gcc
的{{1}}标志和一个依赖项名称数组,我想将它们添加到for循环中的变量中。
我不知道我是否清楚,所以让我告诉你Makefile的一部分。 (不相关的部分被删除)
-I
答案 0 :(得分:0)
我不建议在这里使用for循环,我强烈建议在这种情况下制作${LIBS}
或直接为CFLAGS
创建规则。通过这种方式,您可以对每个目标进行更改,并且可以并行执行配方。
如果是这样的话,你可以做一些更加敏感的事情
LIBS = libX libY libZ
$ {LIBS}: CFLAGS = -I ./${LIBD}/$@ make -C $ {LIBD} / $ {@}
此处需要注意的一点是,您必须更改为“添加”CFLAGS
而非直接简单分配,或者如果您确实需要将它们分开,请将IFL
的使用情况替换为IFL := -I ./inc
},并将IFL += -I ./inc
更改为${LIBD}/$@
如果您不导出变量,无论您正在做什么,它都不会与您的子目录进行通信。
更好的想法:
您有一个makefile已经位于make -C
目录中,因为{{1}}有效;为什么你不能处理添加这个包含路径?或者,如果您想要更通用,请始终将您的构建包括在当前目录中。
您还可以查看目标特定变量。
因此,虽然我认为你正在解决错误的问题,(即不是询问你试图解决的真正问题,而是询问一个问题,试图以特定的方式解决它)我希望这对你有帮助。
答案 1 :(得分:0)
看看Makefile' s text functions。您可能需要subst()
或patsubst()
。例如,对于上述情况,它将是:
LIBS = x y z
FLAGS = $(patsubst %, -I ./${LIBD}/%, ${LIBS})