您的位置:首页 > 教育 > 锐评 > 软件工程学科评估排名_山东省住房和城乡建设厅副厅长_蒙牛牛奶推广软文_网络项目发布网

软件工程学科评估排名_山东省住房和城乡建设厅副厅长_蒙牛牛奶推广软文_网络项目发布网

2025/4/4 14:29:50 来源:https://blog.csdn.net/eloudy/article/details/143092632  浏览:    关键词:软件工程学科评估排名_山东省住房和城乡建设厅副厅长_蒙牛牛奶推广软文_网络项目发布网
软件工程学科评估排名_山东省住房和城乡建设厅副厅长_蒙牛牛奶推广软文_网络项目发布网

第一代构建工具为 make/Makefile,最广受欢迎的构建工具,是对负责于程序猿好奇心、求知欲和长期发展的一代工具,使用非常灵活,便于项目开发。

第二代为 autotools 系列工具,省时间,但是过于傻瓜化,用后变傻瓜,但是有很多项目在用这个;

第三代为 cmake 等系列工具,里边一堆坑,用后变白痴,但是很流行;

下面示例使用 autotools 来从源代码构建一个由9个小文件组成项目,编译出 app,并运行。

1, 示例源文件

文件树:

源文件内容:

2, 验证示例项目的可构建性

使用第一代构建工具 编译项目:

Makefile:

EXE := appall: $(EXE)SRCS :=	src/addd.c \src/app.c \src/divi.c \src/mult.c \src/subb.cOBJS := $(SRCS:.c=.c.o)INC := -I./include/%.c.o: %.cgcc -c $< -o $@ $(INC)app: $(OBJS)gcc $(OBJS) -o $@.PHONY: clean
clean:-rm $(OBJS) $(EXE)

make -j

./app

运行效果:

3, 使用 autotools 构建示例项目

步骤1, 执行 autoscan

获得 configure.ac 并且作为项目发布源代码的一部分

可以使用 autoscan 的到 configure.ac  初步形态configure.scan:

在项目源代码的顶层目录执行 autoscan:

$ autoscan

$ ls

通过扫描项目文件,生成了两个文件:

autoscan.log  和 configure.scan

如下图:

步骤2,复制产生 configure.ac

从 configure.scan 中出现的信息,可以发现其信息不足以构建这个项目,先遍需要做两个步骤的事儿:

step1,修改 configure.scan 的文件名 为 configure.ac

$ mv configure.scan configure.ac

step2, 修改新文件 configure.ac 中的内容

原内容如上图,修改成为如下内容:

configure.ac

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.AC_PREREQ([2.71])
AC_INIT([app], [0.0.1], hanmeimei@gmail.com)
AM_INIT_AUTOMAKE([foreign -Wall -Werror subdir-objects])
AC_CONFIG_SRCDIR([src/addd.c])
AC_CONFIG_HEADERS([config.h])
#AC_SUBDIRS([src])
# Checks for programs.
AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

步骤3,执行  aclocal

$ aclocal

生成aclocal.m4 文件:

步骤4:创建 Makefile.am 文件:


bin_PROGRAMS	= app
#SUBDIRS 	= src
app_SOURCES	= include/addd.h \include/subb.h \include/mult.h \include/divi.h \src/addd.c \src/subb.c \src/mult.c \src/divi.c \src/app.capp_CPPFLAGS	= -I include/

步骤5: 执行 autoheader

$ autoheader

步骤6: 为 automake 命令准备文件

automake 被执行的时候,依赖当前文件夹中的好几个文件,如下touch 产生的文件是其中的一部分,还有一部分,可以在执行 automake 时,指定选项 -a,同 --add-missing,来添加其他几个被依赖的文件

$ touch NEWS README AUTHORS ChangeLog

步骤7: 执行 automake -a

结合 configure.ac 从 Makefile.am 生成 Makefile.in

$ automake -a

效果如下:

步骤8: 执行 autoconf

从 configure.ac 生成 configure 脚本

$ autoconf

 效果如下:

步骤9: 执行 configure 脚本

执行 configure 脚本,结合上述其他中间文件,生成最终的 Makefile 文件


 

$ ./configure

效果如下:

步骤10: 执行 make -j

$ make -j 

生成app:

执行 app:

4,总结

上述过程中编辑生成的文件 Makefile.ac 和  configure.ac 会跟项目源代码一起发布,这里仅仅展示了其来龙去脉,这两个文件的功能非常强大;

这个小示例仅使用了 autotools的主体功能,还有很多细节上的功能没有用到,可以结合小示例的主题体悟进一步学习掌握,逐步深入其中涉及到的概念。

使用第二代构建系统的开源项目,其构建过程一般是:

step1: 生成 configure,这需要执行 autoconf

step2: 生成 Makefile,这需要执行./configure

step3: 编译: make -j

step4: 安装: make -j install

如果项目中存在configure,也可以省略第一步。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com