最近要写makefile,这里记录一下备忘以后方便拿来用。
当我的文件夹中有这么些个文件:
最开始我是手动写成这种的
CXXFLAGS := -W -Wall -O3 -std=c++17 -fconcepts
assignment3: assignment3.o linalg.o matrix.o
$(CXX) $(CXXFLAGS) $^ -o $@
assignment3.o: assignment3.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
linalg.o: linalg.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
matrix.o: matrix.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
.PHONY: clean
clean:
rm *.o assignment3
用起来倒是一点问题都没有,不过一个个挨着打文件名也太傻了吧,于是就去到处查资料学习最后整出个这样的来,这里用到了两个函数。
.PHONY: clean run
#我的编译选项,你可以用你自己的
CXXFLAGS = -W -Wall -O3 -std=c++17 -fconcepts
#指定删除规则
RM = -rm -rf
#注意这里我的文件后缀全是.cc,你可以改成.cpp,当然要记得把所有的都改了
srcpp = $(wildcard ./*.cc)
object = $(patsubst %.cc, %.o, $(srcpp))
#可执行文件的名称,这里你爱用什么用什么
BIN_NAME = assignment3
$(BIN_NAME): $(object)
$(CXX) $(CXXFLAGS) -o $@ $(object)
%.o: %.cc
$(CXX) $(CXXFLAGS) -c $< -o $@
run:
./$(BIN_NAME)
clean:
$(RM) *.o $(BIN_NAME)
make
一下看看,没啥问题
make run
执行那个可执行文件
make clean
清除
(命令行编程果然还是比IDE用起来要有操作感得多
我也是初学者,如果有什么问题与建议敬请指出。