AutoMake系列之二,Makefile.am文件的编写

Makefile.am文件按照编译目标的不同有所不同

 

一、静态库

lib_LIBRARIES = libSNMake.a

libSNMake_a_SOURCES = ../Util_String.cpp ./SNInfo.h

libSNMake_a_CPPFLAGS = 

libSNMake_a_LIBADD = ../../libSNCodes.a

 

注意:

1、第一行申明Build的内容为静态库,第二行指定源文件,第四行指定需要link哪些静态库文件

2、第一行可以用noinst_LIBRARIES表示build静态库并且不需要make install

3、静态库文件生成在其他目录下时,可以书写为

lib_LIBRARIES = /blog/libSNMake.a

_blog_libSNMake_a_SOURCES = ...

...

 

二、应用程序

bin_PROGRAMS = Tester

Tester_SOURCES = ./Tester.cpp

Tester_CPPFLAGS = 

Tester_LDADD = ./libSNMake.a /zeon/libSNCodes.a

 

注意:

1、链接动态链接库的方法为Tester_LIBADD = -lSNMake,此时链接的是libSNMake.so

2、可以指定动态库的链接目录

Tester_LIBADD = -L/blog -Xlinker -rpath -Xlinker /blog -lSNMake

 

三、动态链接库

lib_LTLIBRARIES = libSNMake.la

libSNMake_la_SOURCES = ./Base.cpp

libSNMake_la_CPPFLAGS = -I../../SDK/include/log4net

libSNMake_la_LDFLAGS = -version-number 0.0.0

 

请注意,一个Makefile.am文件中可以同时Build多个库或程序

Makefile.am文件是GNU Automake工具使用的模板文件,它描述了软件包的编译规则和安装规则。Automake是一个从Makefile.in模板生成Makefile.in文件的工具,这些Makefile.in文件可以被GNU Autoconf生成的配置脚本用来生成最终的Makefile。 使用Makefile.am文件的步骤大致如下: 1. **创建Makefile.am文件**:在项目的相应目录中创建Makefile.am文件,该文件通常包含一些宏定义、源文件列表和编译安装规则等信息。 2. **编写Makefile.am内容**:Makefile.am文件中会定义一些宏,例如: - `bin_PROGRAMS`:定义可执行文件。 - `libRARIES`:定义库文件。 - `HEADERS`:定义头文件。 - `MAN`:定义手册页。 - `DATA`:定义数据文件。 在这些宏下面,会列出具体需要构建的文件,例如: ```makefile bin_PROGRAMS = myprog myprog_SOURCES = main.c utils.c myprog_CFLAGS = -Wall -g ``` 这个例子定义了一个名为myprog的可执行文件,其源文件为main.c和utils.c,并指定了编译时的额外标志为-Wall -g。 3. **生成Makefile.in文件**:运行Automake工具,并传入Makefile.am文件所在的目录,Automake会根据Makefile.am的内容生成Makefile.in文件。 4. **配置软件包**:使用Autoconf生成的`configure`脚本来配置软件包。运行`./configure`将会读取Makefile.in并生成最终的Makefile。 5. **编译和安装**:使用生成的Makefile进行编译(`make`命令)和安装(`make install`命令)。 Makefile.am文件编写需要遵循Automake的语法规则和约定,从而确保最终生成的Makefile能够正确地构建和安装软件包。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值