简化工作的利器

Linux系统下开发时总苦恼于工程的管理,单个工程的源文件数大于50之后必然要考虑把其中比较通用的部分整理、抽象成为库。这样一个项目就由多个子工程组成,这是一种比较理想的管理方式。因为通讯工具及使用习惯的原因,日常工作都在windows上进行,此时在linux上开发则通过远程客户端进行。客户端虽然可以使用文字终端或者图形界面终端,但在某些情形下,就需要手工完成一堆源码的编译工作。例如本人目前正在进行的将单一工程内的若干源文件抽取整理为动态库的需要,此工作涉及到的文件数未必很多,若以纯手工方式书写makefile文件未尝不可,只是规则太多,而且文件间的依赖关联一时没有记清楚则整个工程处理起来费时费力。

一个快速处理此类要求的办法是使用autoconfautomakeauto族系列工具。以一个实例为准,将操作步骤记录下来。

1. 建文件夹。

Mkdir libScan/src

2. 复制文件。

将需要编译成库的文件抽取出来复制至libScan/src

3. 运行autoscan命令。

libScan的上级目录运行autoscan libScan/src

出现文件libScan/configure.scan

Mv configure.scan configure.in

4. 修改configure.in

#                                               -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

AC_INIT(configure.in) //

AC_CONFIG_HEADER([config.h])

AM_INIT_AUTOMAKE(libScanLuo.so, 0.1) //

 

AC_LANG_CPLUSPLUS //

# Checks for programs.

AC_PROG_CXX

AC_PROG_CC

AM_PROG_LIBTOOL

# Checks for libraries.

 

# Checks for header files.

 

# Checks for typedefs, structures, and compiler characteristics.

AC_HEADER_STDBOOL

AC_C_CONST

AC_TYPE_SIZE_T

 

# Checks for library functions.

AC_FUNC_CLOSEDIR_VOID

AC_HEADER_STDC

AC_FUNC_STAT

AC_CHECK_FUNCS([getcwd memset strchr strrchr])

 

AC_OUTPUT(Makefile src/Makefile)  //改,符合deep模式

5. 生成Makefile.am文件。

此文件生成目录如下:libScan/Makefile.amlibScan/src/Makefile.am

其中前者内容:

AUTOMAKE_OPTIONS = foreign 1.4

SUBDIRS = src

后者内容:

lib_LTLIBRARIES = libScanluo.la

libScanluo_la_SOURCES =CLXE_File.cpp CLXE_ScanImpl.h ILXE_ScanBase.cpp tagScanParam.h /

CLXE_DiskScan.cpp CLXE_File.h ILXE_ScanBase.h CLXE_DiskScan.h /

CLXE_ScanImpl.cpp tagSfileinfo.h GeneralUtil.cpp GeneralUtil.h CLXEBaseObj.cpp /

CLXEBaseObj.h CLXEObjManager.cpp CLXEObjManager.h ILXE_ManageBase.h

libScanluo_la_LDFLAGS = -lACE

很简单的编辑这两个文件,在命令行下用VIM就行,不会很费劲。

6. 运行autoheader

7. 运行automake –a

8. 运行./configure

9. 运行make

10.          查看成果吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值