用库创建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
我引用这个链接,但我感到困惑。
也许类似
# 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
,它们是header2.hh
的#include
-d,你需要添加依赖规则:
sourc2.o: source2.cpp header1.hh header2.hh
有一种方法(通过像-M或-MD
这样的参数传递给gcc
通过合适的规则)来获得这样的依赖关系自动生成,看到这个问题 。
你可能想要使用重制来调试你的Makefile
-s(例如remake -x
)。 运行make -p
来了解已知的规则