示例makefile,用于在标头更改时构建简单的c项目重新编译
有没有人有一个完整的makefile可以执行以下操作:
- 如果HEADER文件发生更改,则重建项目
- cpp文件列在makefile中
- 头文件未在makefile中列出
- 允许头文件具有与cpp文件不同的名称
- 某些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
编辑:正如TobySpeight指出的那样,如果你构建一个目标文件,重命名或删除一个必备的源文件或头文件,然后尝试重建目标文件,这将不起作用; .d
文件仍然需要丢失的文件,构建将失败。 我忽略了包含线来处理这种情况:
%.h: ; %.cpp: ;
(这很有效,但很粗糙。更精确的方法是在%.o
规则中放入一些sed命令,以便为.d
文件添加特定的空规则,每个先决条件一个,但是sed命令很难看,对于几乎所有情况,上述方法都足够好了。)
您也可以使用CMake。 你需要写的一切是:
add_executable (exec main.cpp C1.cpp C2.cpp)