带有通配符的 Makefile 目标以使用目标字符串创建符号链接(symbolic link)

标签 makefile wildcard

我想要一组生成文件规则,在构建项目之前创建指向几个代码模块之一的符号链接(symbolic link)。 make 目标的名称将确定符号链接(symbolic link)指向的文件。例如:

  • 用户调用“make R3000”
  • Make 发现 'data.asm' 还不存在,因此创建了一个从 'data_R3000.asm' 到 'data.asm' 的符号链接(symbolic link)
  • 使用 data.asm
  • 继续构建过程

    我如何设置规则来做到这一点?

    最佳答案

    也许是这样的:

    MODULES := $(patsubst data_%.asm,%,$(wildcard data_*.asm))
    
    all:
        ...
    
    data.asm:
            [ -n "$(filter $(MAKECMDGOALS),$(MODULES))" ] || { echo unknown module: $(MAKECMDGOALS) ; exit 1; }
            ln -s $(filter $(MAKECMDGOALS),$(MODULES)) $@
    

    然后确保 data.asm在相应的规则中被列为先决条件。

    关于带有通配符的 Makefile 目标以使用目标字符串创建符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21064718/

    相关文章:

    build - 如何使目标依赖于 lib 文件,但将其从 $^ 中排除(涉及 VPATH)?

    makefile - 从 URL 列表中下载文件列表作为 makefile 中的先决条件

    Python 正则表达式 url 抓取

    c++ - 使用具有特定搜索条件的 FindFirstFIleEx() 的示例

    python - 如何更改此脚本以包含重命名功能?

    c++ - Autotools:在 Makefile.am 中生成源代码和 header

    c - CUDA 和 C 的 Makefile

    java - 嵌套的通配符和子类型。如何理解类型何时兼容?

    c - 使用 make 文件编译单独目录中的文件

    mysql - SQL只找到一个标签而不是两个