Maybe something like
# your Makefile #### variables RM= rm -vf CXX= g++ CXXFLAGS= -Wall -g CPPFLAGS= -I/usr/include/opencv -I/usr/include/opencv2 LDLIBS= -lopencv_core -lopencv_imgproc -lopencv_highgui \ -lopencv_ml -lopencv_video -lopencv_features2d \ -lopencv_calib3d -lopencv_objdetect -lopencv_contrib \ -lopencv_legacy -lv4l1 -lv4l2 -lv4lconvert SOURCEFILES= sourc1.cpp sourc2.cpp sourc3.cpp OBJECTFILES= $(patsubst %.cpp,%.o,$(SOURCEFILES)) PROGNAME= yourexe ### rules .PHONY: all clean all: $(PROGNAME) $(PROGNAME): $(OBJECTFILES) $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@ clean: $(RM) $(OBJECTFILES) $(PROGNAME)
Feel free to adapt. (You probably have header files, and you need to add dependencies of object files to source and to header files). Perhaps use pkg-config if it knows about opencv. Replace the initial many spaces in the rules with a tab.
Read carefully GNU make documentation.
If you have
sourc2.cpp and if you have two header files
header2.hh which are
sourc2.cpp you’ll need to add the dependency rule:
sourc2.o: source2.cpp header1.hh header2.hh
You may want to use remake to debug your
Makefile-s (e.g. as
remake -x). Run
make -p to understand which rules are known to