gpt4 book ai didi

c++ - GNU 将所有 .cpp 文件编译为 .o 并包含 .h 文件

转载 作者:行者123 更新时间:2023-11-28 02:12:38 24 4
gpt4 key购买 nike

所以我有这样的文件夹

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 进行编译。感谢您的宝贵时间

最佳答案

您可以使用 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

关于c++ - GNU 将所有 .cpp 文件编译为 .o 并包含 .h 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com