2013-01-06 59 views
-1

如何使用以下命令創建簡單的Makefile?使用庫創建Makefile

g++ -Wall -I/usr/include/opencv -I/usr/include/opencv2 -L/usr/lib/ -g -o exe sourc1.cpp sourc2.cpp sourc3.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lv4l1 -lv4l2 -lv4lconvert -pthread 

我引用了這個link但我感到困惑。

+0

您是否閱讀過http://www.gnu.org/software/make/manual/make.html?你運行過'make -p'嗎? –

回答

4

也許像

# 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.hhheader2.hh這是#include -d由sourc2.cpp你需要添加依賴關係規則:

sourc2.o: source2.cpp header1.hh header2.hh 

,並有一種方法(通過傳遞參數如-M-MDgcc通過合適的規則)來獲得這種自動生成的依賴關係,參見this question

您可能想要使用remake來調試您的Makefile -s(例如,如remake -x)。運行make -p瞭解哪些規則是已知的make

+0

感謝您的回覆 – Haris

+0

您好我瞭解pkg-config。但是,你能否詳細說明「需要添加目標文件對源文件和頭文件的依賴關係」 – Haris

+0

我改進了我的答案。 –