gpt4 book ai didi

makefile - 在循环内连接变量

转载 作者:行者123 更新时间:2023-12-02 21:57:42 39 4
gpt4 key购买 nike

我不得不在 Makefile 的 for 循环中连接一个变量。
我有一个变量,其中包含头文件 -Igcc 标志以及一个依赖项名称数组,我希望将其添加到 for 循环中的变量中。
我不知道我是否清楚,所以让我向您展示 Makefile 的部分。 (无关的部分已删除)

IFL  := -I ./inc

...

LIBS = libX libY libZ

...

libraries:
@for i in $(LIBS); do \
IFL += -I ./$(LIBD)/$$i; \ # PROBLEM ?
make -C $(LIBD)/$$i ; \
done

最佳答案

  1. 我不建议在这里使用 for 循环,我强烈建议使用 libraries = ${LIBS}在这种情况下或直接为 ${LIBS} 创建规则。这样您就可以对每个目标进行更改,并且配方可以并行执行。

  2. 在这种情况下,你可以做一些更明智的事情,就像这样

    LIBS = libX libY libZ

    ${LIBS}: CFLAGS = -I ./${LIBD}/$@ make -C ${LIBD}/${@}

    这里需要注意的是,您必须将“添加”更改为 CFLAGS而不是直接简单的分配,或者如果您确实需要将它们分开,请替换我的使用 CFLAGSIFL ,并更改IFL := -I ./inc成为IFL += -I ./inc

  3. 如果您不导出变量,无论您在做什么,它都不会传递到您的子制作。

更好的想法:
您的 makefile 已位于目录 ${LIBD}/$@ 中因为make -C作品;为什么你不能在那里添加这个包含路径?或者,如果您想变得更通用,请始终让您的构建包含当前目录。

您还可以查看目标特定变量。

因此,虽然我认为您正在解决错误的问题(即,您不是在询问您要解决的真正问题,而是在询问试图以特定方式解决问题的问题),但我希望这对您有所帮助。

关于makefile - 在循环内连接变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613215/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com