c++ 下的makefile很久之前有写过,但是今天凭记忆写了一个,居然还写错了,而且还浪费了半小时去找原因。所以也写一个错误笔记来谨以记住。
文件树如下:
.
├── camera.cpp
├── camera.h
├── ffmpeg_encoder.cpp
├── ffmpeg_encoder.h
├── main.cpp
├── udp_socket.cpp
└── udp_socket.h
Makefile如下:
CC := gcc CXX := g++ Target_Object := main INCLUDE_PATH :=-I/usr/local/include -I/usr/local/ffmpeg/include LIBS_PATH :=-L/usr/local/lib -L/usr/local/ffmpeg/lib LIBS := -lraspicam -lavcodec -lavformat -lavutil -lswscale All:main.o camera.o ffmpeg_encoder.o udp_socket.o $(CXX) $(LIBS_PATH) $(LIBS) main.o camera.o ffmpeg_encoder.o udp_socket.o -o $(Target_Object) main.o:main.cpp $(CXX) -c $(INCLUDE_PATH) main.cpp -o main.o camera.o:camera.h camera.cpp $(CXX) -c $(INCLUDE_PATH) camera.cpp -o camera.o ffmpeg_encoder.o:ffmpeg_encoder.h ffmpeg_encoder.cpp $(CXX) -c $(INCLUDE_PATH) ffmpeg_encoder.cpp -o ffmpeg_encoder.o udp_socket.o:udp_socket.h udp_socket.cpp $(CXX) -c $(INCLUDE_PATH) udp_socket.cpp -o udp_socket.o clean: rm -rf ./*.o $(Target_Object)
错误之处:
将:
All:main.o camera.o ffmpeg_encoder.o udp_socket.o $(CXX) $(LIBS_PATH) $(LIBS) main.o camera.o ffmpeg_encoder.o udp_socket.o -o $(Target_Object)
错写为:
All:main.o camera.o ffmpeg_encoder.o udp_socket.o $(CXX) $(LIBS_PATH) $(LIBS) main.o -o $(Target_Object)