所以我的文件夹看起来像这样
OS
Makefile
/include
head.h
/src
main.cpp
head.cpp
/objects
如何使用Makefile将所有.cpp文件编译到对象文件夹,然后将包含.h的所有.o文件编译到我的实际cpp程序中。我目前有:
CPP_FILES := $(wildcard src/*.cpp)
H_FILES := $(wildcard include/*.h)
OBJ :=$(wildcard objects/*.o)
LIBS := -Wall
CC := -std=c++14
我接下来要输入什么来将所有这些.cpp文件制作成.o并使用.h编译它们。谢谢你的时间
答案 0 :(得分:2)
您可以使用pattern rules(以前称为"后缀规则")。在使用GNU make时,您可以编写此行来编译.cpp
中src/
个.o
个文件中的所有objects/
个文件,假设放置了Makefile
顶级目录:
objects/%.o: src/%.cpp
$(CXX) -c $(CFLAGS) $< -o $@
在GNU中,make语法$<
表示依赖项(本例中为.cpp文件),$@
表示目标(目标文件)。
不需要编译.h
个文件,只需将正确的包含路径设置为CFLAGS变量包含的字符串的一部分:
CFLAGS += -I./include