gpt4 book ai didi

c++ - 我想要的自动生成文件

转载 作者:行者123 更新时间:2023-11-30 00:49:16 24 4
gpt4 key购买 nike

我是 make 文件的新手。

我有一个程序是由

main.cpp
types.hpp
application/coordinator.hpp
application/correlation.hpp
application/handler.hpp
application/settings.hpp
libraries/basket.hpp
libraries/config.hpp
libraries/graphics.hpp
...

我有很多文件,我的文件列表会更新很多次。我希望 make 文件自动识别要生成或更新哪个 .o 文件。我不想在每次创建和包含新文件时都更新我的 make 文件。输出必须在名为 bin

的目录中生成

main.cpp 是我唯一的 cpp 文件,我的其余文件是 hpp

到目前为止,这个link启发了我编写这段代码:

CC=g++
CFLAGS= -g -Wfatal-errors

CFLAGS+= -std=c++11
LIBS= -lboost_filesystem -lboost_system

all: run

run: $(OBJS)
$(CC) $(CFLAGS) $^ main.cpp -o $@

$(OBJS): bin/%.o : bin/%.hpp

如何将其改进为工作代码以及我想要的?

最佳答案

如果您打算只拥有一个 cpp文件,您可以按以下方式编写 makefile:

CXX := g++
CXXFLAGS := -g -Wall -pedantic -Wextra

HEADERS := types.hpp $(wildcard application/*.hpp) $(wildcard libraries/*.hpp)

all: run

run: main.cpp $(HEADERS)
$(CXX) $(CXXFLAGS) $< -o $@

$(wildcard)将在应用程序和库中找到所有 header 。可执行文件将取决于所有 header 和 main.cpp因此,如果其中任何一个发生变化,二进制文件将被重建。

$<意思是“第一依赖”。这样,只有 cpp 文件被传递给编译器。

注意:在 GNU make 约定中,CC 和 CFLAGS 指的是 C 编译器。对于 C++,变量命名为 CXX 和 CXXFLAGS。

关于c++ - 我想要的自动生成文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28602100/

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