makefile切断传递给规则的变量

时间:2017-02-18 07:21:20

标签: makefile

以下是我的一个makefile中的两个规则的简化版本。

Link:
    ld $(SONG_OBJ) -o Songs/$(FILE)/$(FILE)

Song:
    $(eval SONG_OBJ = $(wildcard Songs/$(FILE)/Build/*.o))
    make Link FILE=$(FILE) SONG_OBJ=$(SONG_OBJ)

因此,SONG_OBJ包含由空格分隔的多个字符串。但是,看起来Song规则只发送第一个字符串,即它在第一个空格之后切断SONG_OBJ中的任何内容到链接规则。有关如何解决此问题的任何建议?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

SONG_OBJ=$(SONG_OBJ)的递归调用中,make周围需要双引号:

    make Link FILE=$(FILE) SONG_OBJ="$(SONG_OBJ)"

目前,SONG_OBJ设置为第一个单词,其他名称只是传递给make作为要构建的更多目标(除Link之外)。