Makfile简介


Makefile基本上就是【目标】(target)【关联】(dependencies)和【动作】三者所组成的一系列规则。而make就会根据Makefile的规则来决定如何编译(comile)和连接(link)程序。

自己编写(适用于小型项目):

其中Makefile为:

运用autoconf,automake自动生成makefile(适用于大型项目)

如图为automake,autoconf生成makefile的过程(简化)。

为一个项目源文件生成makefile并make的步骤如下:

操作在包含源文件的项目目录下进行。

(1). 运行autoscan,生成文件configure.scan。

(2). 修改configure.scan,改名为configure.ac。

(3).运行aclocal,生成aclocal.m4。

(4).运行autoheader,生成文件configure.h.in 。configure.in里有宏AC_CONFIG_HEADER()时用。

(5). 运行autoconf,生成configure。

(6).为源文件编写Makefie.am,每一个包含源文件的目录和子目录都有一个Makefile.am。

(7).运行libtoolize --automake --copy --debug --force,生成一些支持文件,ltmain.sh。需要用libtool生成共享库用。

(8) automake -a 或者 automake --add-missing 选项可以补齐文件config.guess,config.sub,install-sh,missing,depcomp

(8).运行automake,生成makefile.in,每个包含Makefile.am的子目录都生成Makefile.in。

(9).运行./configure,生成config.status,config.h,makefile。

(10).运行make,生成中间文件对象文件,库文件,最后生成可执行文件。

(11).运行make install,相应的可执行文件,库文件,头文件拷贝到系统相应位置。

(12)执行Makefile.am中定义的文件名helloworld.

$ ./helloworld

2.下面是带图文详细步骤:

原文链接:https://blog.csdn.net/liguangxianbin/article/details/80177491

Makefile.am介绍

Makefile.am是一种比 Makefile 更高层次的规则。只需要指定要生成什么目标,它由什么源文件生成,要安装到什么目录 等构成

下表列出了可执行文件、静态库、头文件和数据文件,四种书写 Makefile.am 文件的一般格式。


对于可执行文件和静态库类型,如果只想编译,不想安装到系统中,可以用 noinst_PROGRAMS 代替 bin_PROGRAMS, noinst_LIBRARIES 代替 lib_LIBRARIES。

Makefile.am 文件还提供一些全局变量供所有的目标使用:


在Makefile.am 中尽量使用相对路径,系统预定义了两个基本路径:

原文链接:https://blog.csdn.net/u011641885/article/details/47037421

例子:

top_srcdir = ${IPLATURE}
top_srcdir_pcs = ${IXCOMPCS}
PROGRAM := ${AUTOTEST}/bin/DB2SendTest
SRCDIRS := .
include $(top_srcdir)/source/iplature_exegeneral

LINKWITH   += -L${IXCOMPCS}/Library -liXcomTCP2 -lXmlRpc -lTinyXml -lCppSQLite3 -lrt -lPowerTranser
LINKWITH   += -L${IXCOMPCS}/Library -lboost_thread -lCommonLibrary -lutility
LINKWITH   += -L${AUTOTEST}/Library -lAssertBase

CXXFLAGS  += -D _LINUX -I${IXCOMPCS}/Include  
CXXFLAGS  += -std=c++11
ifeq ($(RELEASE),0)
	CXXFLAGS	+= -g
else
	CXXFLAGS	+= -O2 -DNDEBUG
endif
CXXFLAGS += -D _LINUX -I${AUTOTEST}/include
CXXFLAGS += -I .

相关