make及cmake简单使用

A simple task to use Make

Make的规则

1
2
test(目标文件): prog.o code.o(依赖文件列表)
tab(一个tab来隔开) gcc prog.o code.o -o test(命令)

生成MakeFile文件

1
2
3
4
5
6
7
8
test: prog.o code.o
gcc prog.o code.o -o test
prog.o: prog.c code.h
gcc -c prog.c -o prog.o
code.o: code.c code.h
gcc -c code.c -o code.o
clean:
rm -f *.o test

使用make命令执行Makefile

1
2
3
4
5
6
7
8
9
make
gcc prog.o code.o -o test
gcc -c code.c -o code.o
gcc prog.o code.o -o test

./test

//清除.o和test文件
make clean

以下非常感谢@Eric2i的MakeFile项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CC=g++
CFLAGS=-Wall -std=c++17 -Wno-sign-compare
BINDIR=bin
OBJDIR=obj
SRCDIR=src

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
$(CC) $(CFLAGS) -c -o $@ $<

$(BINDIR)/exec: $(OBJDIR)/main.o $(OBJDIR)/grammar.o
$(CC) -o $@ $^

test: $(BINDIR)/exec
$(BINDIR)/exec

clean:
rm -rf $(OBJDIR)/*
rm -rf $(BINDIR)/*

自备本地cmake!

1
2
3
4
5
6
7
8
9
10
11
12
cmake_minimum_required(VERSION 3.25)
project(Course_compiler)

set(CMAKE_CXX_COMPILER "D:/university/C++/mingw64/bin/g++.exe")

set(CMAKE_C_COMPILER "D:/university/C++/mingw64/bin/gcc.exe")

add_executable(Course_compiler src/main.cpp)

# cmake -G"MinGW Makefiles"
# ./Course_Compiler