c++ - Makefile - 通配符,如何正确执行?

标签 c++ c makefile

FLAGS:= -Wall -Wvla -g -lm
OBJECT := Nominated.h UniversityNominated.h AliceGraduate.h BobGraduate.h CollegeNominated.h ColinGraduate.h DannyGraduate.h NominatedList.h Parser.h Parser.cpp
all: Hire

Nominated.o: Nominated.h Nominated.cpp
    g++ -c $(FLAGS) Nominated.cpp -o Nominated.o

NominatedList.o: Nominated.h NominatedList.h NominatedList.cpp
    g++ -c $(FLAGS) NominatedList.cpp -o NominatedList.o

UniversityNominated.o: Nominated.h UniversityNominated.h UniversityNominated.cpp
    g++ -c $(FLAGS) UniversityNominated.cpp -o UniversityNominated.o

AliceGraduate.o: Nominated.h UniversityNominated.h AliceGraduate.h AliceGraduate.cpp
    g++ -c $(FLAGS) AliceGraduate.cpp -o AliceGraduate.o

BobGraduate.o: Nominated.h UniversityNominated.h BobGraduate.h BobGraduate.cpp
    g++ -c $(FLAGS) BobGraduate.cpp -o BobGraduate.o

CollegeNominated.o: Nominated.h CollegeNominated.h CollegeNominated.cpp
    g++ -c $(FLAGS) CollegeNominated.cpp -o CollegeNominated.o

ColinGraduate.o: Nominated.h CollegeNominated.h ColinGraduate.h ColinGraduate.cpp
    g++ -c $(FLAGS) ColinGraduate.cpp -o ColinGraduate.o

DannyGraduate.o: Nominated.h CollegeNominated.h DannyGraduate.h DannyGraduate.cpp
    g++ -c $(FLAGS) DannyGraduate.cpp -o DannyGraduate.o

Parser.o: $(OBJECT)  
    g++ -c $(FLAGS) Parser.cpp -o Parser.o

Parser: Nominated.o UniversityNominated.o AliceGraduate.o BobGraduate.o CollegeNominated.o ColinGraduate.o DannyGraduate.o NominatedList.o Parser.o
    ar rcu libParser.a Nominated.o UniversityNominated.o AliceGraduate.o BobGraduate.o CollegeNominated.o ColinGraduate.o DannyGraduate.o NominatedList.o Parser.o
    ranlib libParser.a

Hire: Hire.cpp Parser
    g++ Hire.cpp libParser.a -o Hire

clean:
    rm -f Hire *.a *.o *~
.PHONY: clean all

所以这是我的 Makefile。

我怎样才能不那么丑陋?

我总是读到它,但我无法理解

如何?

我的意思是我知道我需要使用通配符工具,但正如您所说,我可能用错了

最佳答案

这是一个如何使用通配符和模式替换的示例:

SOURCES := $(wildcard *.cpp)
OBJECTS := $(patsubst %.cpp,%.o,$(SOURCES))
CXX := g++ -Wall -Wvla -g

.cpp.o:
        ${CXX} -c $<

这会将所有 .cpp 文件构建到它们的目标文件中。

关于c++ - Makefile - 通配符,如何正确执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14145344/

相关文章:

c++ - 在版本控制中包含外部 C++ 库

c++ - 使用命名空间的行为如何?

c - 使用二分搜索在排序数组的正确位置插入一个元素以找到正确的位置,但是出现运行时错误

C:段错误:在 NetBeans (OS X) 上运行,但在 Linux 上不运行

c - 我的 Avro-C 安装在哪里?

c++ - cygwin 无法从/cygdrive 找到我的编译器

c++ - 申请失败(make Killed)

c++ - 在 C++ 代码上使用 astyle 删除空格并添加换行符

c - 包括外部声明的枚举在内的问题 - C 代码

git - 了解 git 和 checkout