gpt4 book ai didi

c++ - 自动化我的 Makefile

转载 作者:太空宇宙 更新时间:2023-11-04 03:49:31 26 4
gpt4 key购买 nike

我正在学习创建 makefile。我的文件夹结构看起来像这样..

Project

    bin        //this is where the executable "e" is kept
e
obj //this is where the obj files generated are kept
Node.o
Node1.o
src //this is where .cpp files resides
Folder
Node.cpp
Folder2
Node1.cpp
include //this is where .hhp files resides
Folder
Node.hpp
Folder2
Node1.hpp
makefile

我正在使用 Ubuntu 12.04 并尝试使用 g++ 对其进行编译。 makefile 与以下文件夹一起位于项目文件夹中:src、include、obj 和 bin

我的 makefile 看起来像这样

CC = g++
DEBUG = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
TARGET = bin/
OBJ = obj/
INCLUDE = include/
SRC = src/

SOURCES=$(wildcard $(SRC)**/*.cpp $(SRC)*.cpp)
HEADERS=$(wildcard include/**/*.hpp include/*.hpp)
OBJECTS=$(patsubst %.cpp,$(OBJ)%.o,$(notdir $(SOURCES)))

All : $(TARGET)e

$(TARGET)e : make_dir $(OBJECTS)
$(CC) $(LFLAGS) $(OBJECTS) -o $@

$(OBJ)Node.o : $(SRC)Folder/Node.cpp $(HEADERS)
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@
$(OBJ)Node1.o : $(SRC)Folder2/Node1.cpp $(HEADERS)
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@

make_dir:
mkdir -p obj bin
clean :
-rm -rf bin
-rm -rf obj
-rm -f e *.o *~

这段代码运行得很好,但我想做的是替换下面的代码片段

$(OBJ)Node.o : $(SRC)Folder/Node.cpp $(HEADERS)      
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@
$(OBJ)Node1.o : $(SRC)Folder2/Node1.cpp $(HEADERS)
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@

更像一些东西

%.o : %.cpp $(HEADERS)      
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@

概括整个馈送和映射的东西。换句话说,以一种我不应该担心或编辑的方式自动化 makefile,直到层次结构被打乱。

最佳答案

$(OBJ)/%.o : $(SRC)Folder/%.cpp $(HEADERS)      
$(CC) $(CFLAGS) -I$(INCLUDE) $< -o $@

关于c++ - 自动化我的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818120/

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