0

如何使用以下命令创建一个简单的 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  

我引用了这个链接,但我很困惑。

4

1 回答 1

5

也许像

 # 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

于 2013-01-06T08:26:45.710 回答