如何使用 makefile 检查具有特定扩展名的文件是否存在

How to check if a file with a certain extension exists using a makefile

我想检查makefile中是否存在具有特定扩展名的文件,但是这段代码不起作用:

ejecutar: $(OUTPUT) clean
    ifeq (,$(wildcard *.dat))
        ./$(OUTPUT) < $(OUTPUT).dat >$(OUTPUT).txt
    else
    ./$(OUTPUT) < $(OUTPUT).dat >$(OUTPUT).txt

据说错误在 ifeq 行。

配方中的内容应该是shell脚本,而不是Makefile语法。当读取 Makefile 时,Make 解释的任何内容都会扩展,您通常希望您的配方在执行该特定配方时检查事物。 (这是一个常见的初学者常见问题解答。)

检查通配符是否匹配 shell 脚本中的任何文件也出奇地不明显。

ejecutar: $(OUTPUT) clean
    set -- *.dat \
    ; if [ -e "$" ]; then \
        ./$< < $<.dat >$<.txt; \
    else \
        ./$< < $<.dat >$<.txt; \
    fi

你的 thenelse 案例相同也很奇怪,但我没有判断。