在循环中连接变量

时间:2015-11-09 16:04:08

标签: makefile

我坚持在Makefile中的for循环中连接一个变量 我有一个变量,其中包含头文件gcc的{​​{1}}标志和一个依赖项名称数组,我想将它们添加到for循环中的变量中。
我不知道我是否清楚,所以让我告诉你Makefile的一部分。 (不相关的部分被删除)

-I

2 个答案:

答案 0 :(得分:0)

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

  2. 如果是这样的话,你可以做一些更加敏感的事情

    LIBS = libX libY libZ

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

    此处需要注意的一点是,您必须更改为“添加”CFLAGS而非直接简单分配,或者如果您确实需要将它们分开,请将IFL的使用情况替换为IFL := -I ./inc },并将IFL += -I ./inc更改为${LIBD}/$@

  3. 如果您不导出变量,无论您正在做什么,它都不会与您的子目录进行通信。

  4. 更好的想法:
    您有一个makefile已经位于make -C目录中,因为{{1}}有效;为什么你不能处理添加这个包含路径?或者,如果您想要更通用,请始终将您的构建包括在当前目录中。

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

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

答案 1 :(得分:0)

看看Makefile' s text functions。您可能需要subst()patsubst()。例如,对于上述情况,它将是:

LIBS = x y z
FLAGS = $(patsubst %, -I ./${LIBD}/%, ${LIBS})