Makefile文件编写

本文介绍了在Linux环境下编写Makefile文件的基础知识,包括Makefile命令的编写规范,如命令需以tab键开头,规则的依赖关系和目标生成方法,以及Makefile中的变量使用和四种赋值方式:递归赋值、非递归赋值、条件赋值和追加赋值。文章以一个简单的Makefile实例展示了编译代码的过程,并分享了作者的学习心得。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

做项目需要在linux下编译文件,所以临时学习一下Makefile文件的编写,只了解了一些皮毛

代码

编译自己的代码所编写的Makefile文件如下:

INCLUDE_DIRS := ./ /usr/local/include /usr/include
LIBRARY_DIRS := /usr/local/lib /usr/lib

LIBRARIES := opencv_core opencv_imgproc opencv_highgui

WARNINGS := -Wall

CXX:= /usr/bin/g++
COMMON_FLAGS += $(foreach includedir,$(INCLUDE_DIRS),-I$(includedir))
CXXFLAGS := -fPIC $(COMMON_FLAGS)
LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(foreach library,$(LIBRARIES),-1$(library))

all : cnn_decode.bin

cnn_decode.bin : main.o net.o layer.o blob.o math_funtion.o
    $(CXX) -c cnn_decode.bin main.o net.o layer.o blob.o math_functions.o $(LDFLAGS) $(WARNINGS)
main.o : main.cpp net.h
    $(CXX) -c main.cpp net.h $(CXXFLAGS) $(LDFLAGS) $(WARNINGS)
net.o : net.cpp net.h
    $(CXX) -c net.cpp net.h $(CXXFLAGS) $(LDFLAGS) $(WARNINGS)
layer.o : layer.cpp layer.h
    $(CXX) -c layer.cpp layer.h $(CXXFLAGS) $(LDFLAGS) $(WARNINGS)
blob.o : blob.cpp blob.h
    $(CXX) -c blob.cpp blob.h $(CXXFLAGS) $(LDFLAGS) $(WARNINGS)
math_functions.o : math_functions.cpp math_functions.h
    $(CXX) -c math_functions.cpp
    math_functions.h $(CXXFLAGS) $(LDFLAGS) $(WARNINGS)
.PHONY : clean
clean:
    -rm cnn_decode.bin main.o net.o layer.o blob.o math_functions.o

一些学习心得如下:
1、Makefile中的命令如果单独一行,要以tab键开头。
2、Makefile规则包含两部分:一个是依赖关系,一个是生成目标的方法。规则顺序很重要,因为Makefile中只应该有一个最终目标。
3、Makefile中的变量相当于C/C++中的宏,使用的时候$(变量名)。
4、四种赋值方式:
(1)= 递归赋值,Makefile展开后最后被指定的值
(2):= 非递归赋值,取决于在Makefile中的位置
(3) ?= 若没被赋值过则赋值
(4) += 添加等号后面的值
未完待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值