也许像
# 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)
随意适应。(您可能有头文件,并且需要将目标文件的依赖项添加到源文件和头文件)。如果它知道opencv ,也许可以使用pkg-config。用制表符替换规则中最初的许多空格。仔细阅读GNU make 文档。
如果你有sourc2.cpp
并且如果你有两个头文件header1.hh
并且header2.hh
是#include
-dsourc2.cpp
你需要添加依赖规则:
sourc2.o: source2.cpp header1.hh header2.hh
并且有一种方法(通过传递-M之类的参数或-MD
通过gcc
适当的规则)来自动生成此类依赖项,请参阅此问题。
您可能想使用remake来调试您的Makefile
-s (例如 as remake -x
)。运行make -p
以了解哪些规则是已知的make