用于在标头更改时重新编译的简单 C 项目的示例 makefile

2024-05-23

有谁有完整的 makefile 可以执行以下操作:

  1. 如果 HEADER 文件发生更改,则重建项目
  2. cpp 文件在 makefile 中列出
  3. 头文件未在 makefile 中列出
  4. 头文件允许与 cpp 文件具有不同的名称
  5. 部分cpp文件没有头文件

我已经看到了如何使 make 工具找出标头依赖性的说明,但这些说明都没有提供任何与工作示例类似的内容。一个简单的示例如下: main.cpp C1.cpp C1.h C2.cpp C2.h


CXX = g++

OBJECTS := main.o C1.o C2.o

all: $(OBJECTS)

%.o : %.cpp
    $(CXX) $(CPPFLAGS) -Wall -MMD -c $< -o $@

-include *.d

EDIT:正如 TobySpeight 指出的那样,如果您构建一个目标文件,重命名或删除先决条件源文件或头文件之一,然后尝试重建该目标文件,那么这将不起作用;这.d文件仍然需要丢失的文件,并且构建将失败。我忽略了包含处理这种情况的行:

%.h: ;
%.cpp: ;

(这很有效,但很粗糙。更精确的方法是将一些 sed 命令放在%.o规则,以便将特定的空规则添加到.d文件,每个先决条件都有一个,但是 sed 命令很丑陋,上面的方法对于几乎所有情况都足够了。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于在标头更改时重新编译的简单 C 项目的示例 makefile 的相关文章