完整工程的Makefile

我的 总结:今天我发现Makefile真的是博大精深,今天学到了安装,$(prefix),把应用安装到指定的目录中。

工程下Makefile是根据规则来编译整个工程的,这个和编译简单的hello world 是一个道理。

Makefile的框架是由规则构成的,make命令执行时,先在Makefile文件中查找各种规则,对各种规则进行解析后,运行规则。规则的基本格式为
TARGET… :DEPENDEDS…
COMAND

TARGET:规则所定义的目标。通常规则是最后生成的可执行文件的文件名或者为了生成可执行文件而依赖的目标文件的文件名,也可以是一个动作,称之为。伪目标。

先来说下Makefile.am中常见的文件编译类型,详细的编译类型和全局变量鹏博客会在下面在图表中列出:PROGRAMS 表示可执行文件SOURCES 表示源文件HEADERS 头文件。LIBRARIES 表示库文件LTLIBRARIES 这也是表示库文件,前面的LT表示libtool。DATA 数据文件,不能执行。SCRIPTS 脚本文件,这个可以被用于执行。如:example_SCRIPTS,如果用这样的话,需要我们自己定义安装目录下的example目录,很容易的,往下看。

一、基本写法下面就直接引入一个例子进行详细讲解,如下:AUTOMAKE_OPTIONS = foreignbin_PROGRAMS = clientclient_SOURCES = key.c connect.c client.c main.c session.c hash.cclient_CPPFLAGS = -DCONFIG_DIR=\“KaTeX parse error: Expected 'EOF', got '\”' at position 13: (sysconfdir)\̲”̲ -DLIBRARY_DIR=…(pkglibdir)\”client_LDFLAGS = -export-dynamic -lmemcachednoinst_HEADERS = client.hINCLUDES = -I/usr/local/libmemcached/include/client_LDADD = $(top_builddir)/sx/libsession.la $(top_builddir)/util/libutil.la上面就是一个Makefile.am示例文件,这个文件是用于生成client可执行应用程序,引用了两个静态库和MC等动态库的连接。先来看个图表一(列出了可执行文件、静态库、头文件和数据文件,四种书写Makefile.am文件个一般格式。):

在这里插入图片描述

在这里插入图片描述

prefix参数的作用,其主要用在编译安装源代码应用中的./configure环节。

1、源码安装一般包括几个步骤:配置(configure),编译(make),安装(make install)。
2、其中configure是一个可执行脚本,在源码目录中执行可以完成自动的配置工作,即./configure。
3、在实际的安装过程中,我们可以增加–prefix参数,这样可以将要安装的应用安装到指定的目录中,如,我们要安装git应用,在配置环节可以使用如下命令:

–prefix

./configure --prefix=/usr/local/git

之后再执行make & make install命令就可以将git安装到了/usr/local/git目录中,这样做的好处就是方便以后的维护。

来源:简书

全局变量,可能有人注意到文件中的 ( t o p b u i l d d i r ) 等 全 局 变 量 , 其 实 这 个 是 M a k e f i l e . a m 系 统 定 义 的 一 个 基 本 路 径 变 量 , 表 示 生 成 目 标 文 件 的 最 上 层 目 录 , 如 果 这 个 M a k e f i l e . a m 文 件 变 成 其 它 的 M a k e f i l e . a m 文 件 , 那 么 这 个 就 表 示 其 它 的 目 录 , 而 不 是 这 个 当 前 目 录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值