更新源时Makefile不构建

时间:2018-02-25 19:42:29

标签: c makefile

我最近选择了makefile并尝试自动化我的构建过程。对于这个makefile,我希望它找到每个xxx / src / xxx.c源文件,并为每个文件构建一个等效的xxx / obj / xxx.o对象。所以每个obj文件夹都会镜像src文件夹的布局。

这是按预期工作的,但只有在我清理和制作的情况下。修改源文件并运行make不会重建该文件。我认为它可能与%.o依赖的我的subst有关,但我不知道如何修改它仍然让我的自动构建布局工作。

execFile()

2 个答案:

答案 0 :(得分:3)

您可以通过迭代import random def random_number(): random_dollars = random.uniform(1, 10000) split = str(random_dollars).split(".") if (len(split) == 2 ): if (len(split[1]) == 1 ):# checks if 1 digit after decimal place answer = split[0] + ".0" split[1] = str(int(int(split[1]) / (10 ** (len(split[1]) - 3) ))) # Gets 3 decimal places if int(split[1][-1:]) => 5: #Checks if last digit is above or equal to 5 split[1] = int(split[1][:-1]) split[1] += 1 else: split[1] = int(split[1][:-1]) answer = split[0] + '.' + str(split[1]) else: answer = split[0] + ".00" print(answer) random_number() 来解决此类%/xxxx/%模式替换:

SRCDIR

答案 1 :(得分:1)

您可以使用secondary expansion执行此操作。它并不优雅,但它有效:

.SECONDEXPANSION:
%.o: $$(addsuffix .c,$$(basename $$(subst /obj/,/src/,$$@)))
    @echo building $@ from $^
    @mkdir -p $(@D)
    gcc -o $@ -c $< $(CFLAGS) $(INC)