一、 Makefile
使用makefile管理和编译c++代码
#(1)正常多文件合并编译
g++ main.cpp factorial.cpp printhello.cpp -o main
./main # run
#(2)单个文件编译,若修改单个文件,则重新编译单个文件后链接
g++ main.cpp -c #只编译一个文件
g++ factorial.cpp -c
g++ printhello.cpp -c
g++ *.o -o main #链在一起,生成可执行文件
#(3)如果工程大,文件多,则不适用,所以用makefile;且会自动监测源文件是否已经被修改,若修改则重新编译生成
hello: main.cpp factorial.cpp printhello.cpp
g++ -o hello main.cpp factorial.cpp printhello.cpp #前面是tab键
#(4) 第一个版本makefile
$(TARGET):$(OBJ)
$(CXX) -o $(TARGET) $(OBJ)
main.o: main.cpp
$(CXX) -c main.cpp
factorial.o: factorial.cpp
$(CXX) -c factorial.cpp
#(5) 第二个版本
CXX = g++
TARGET =hello
OBJ = main.o factorial.o printhello.o
CXXFLAGS = -c -Wall # -Wall 将所有警告爆出
$(TARGET):$(OBJ)
$(CXX) -o $@ $^
%.o:%.cpp
$(CXX) $(CXXFLAGS) $< -o $@ #代替(4)中的三条
# .PHONY:clean
clean:
rm -f *.o $(TARGET)
#(6) 第三个版本(常用,文件夹下的cpp全部编译,若有新增cpp也不需要修改makefile)
CXX = g++
TARGET =hello
SRC = $(wildcard *.cpp)
OBJ = $(patsubst %.cpp,%.o,$(SRC))
CXXFLAGS = -c -Wall # -Wall 将所有警告爆出
XXX
XXX
二、 CMake
1)自己写CMakeLists.txt
2)CMake:帮我们生成Makefile #执行make #执行cmake
3) 执行make,生成可执行文件
4)执行make clean
创建build文件夹,cmake… ,这样的好处,所有生成的文件都在build里面,删除好删;