是否有人拥有可以执行以下操作的完整makefile:

  • 如果HEADER文件更改
  • ,则重建项目
  • cpp文件在makefile
  • 中列出
  • 头文件未在makefile
  • 中列出
  • 头文件的名称可以与cpp文件
  • 的名称不同
  • 一些cpp文件没有头文件

  • 我已经看到了有关说明如何使make工具了解 header 依赖性的说明,但是这些说明中没有一个提供了与实际示例相似的内容。一个简单的示例如下: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
    

    编辑:如TobySpeight所指出的,如果您构建目标文件,重命名或删除先决条件源文件或头文件之一,然后尝试重建目标文件,则此操作无效。 .d文件仍将需要缺少的文件,并且构建将失败。我忽略了处理这种情况的内容:
    %.h: ;
    %.cpp: ;
    

    (这是有效的,但很粗糙。更精确的方法是将一些sed命令放入%.o规则中,以便向.d文件中添加特定的空规则,每个先决条件一个,但是sed命令很丑陋,并且该方法以上几乎适用于所有情况。)

    关于c++ - 标题更改时用于构建简单C项目重新编译的示例makefile,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21871426/

    10-11 23:16
    查看更多