也許像
# 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 [email protected]
clean:
$(RM) $(OBJECTFILES) $(PROGNAME)
隨意調整。 (你可能有頭文件,你需要添加對象文件的依賴關係到源文件和頭文件)。也許使用pkg-config,如果它知道opencv。使用選項卡替換規則中的最初多個空格。 仔細閱讀GNU make documentation。
如果你有sourc2.cpp
,如果你有兩個頭文件header1.hh
和header2.hh
這是#include
-d由sourc2.cpp
你需要添加依賴關係規則:
sourc2.o: source2.cpp header1.hh header2.hh
,並有一種方法(通過傳遞參數如-M或-MD
到gcc
通過合適的規則)來獲得這種自動生成的依賴關係,參見this question。
您可能想要使用remake來調試您的Makefile
-s(例如,如remake -x
)。運行make -p
瞭解哪些規則是已知的make
您是否閱讀過http://www.gnu.org/software/make/manual/make.html?你運行過'make -p'嗎? –