make使用说明

来源:互联网 发布:unity shader编程 编辑:程序博客网 时间:2024/04/28 10:54

 

源代码目录结构(deep模式 1(还有flatshallow模式)

工程目录

./home/nari/nsc

头文件目录

./home/nari/nsc/includes

源代码目录

./home/nari/nsc/calcyx

参数文件目录

./home/nari/nsc/para

 

控制台所在目录./home/nari/nsc

1.  自动扫描源文件

命令:autoscan

生成文件:autoscan.logconfigure.scan

文件内容:autoscan.log为空

          configure.scan内容如下:

#            -*- Autoconf -*-

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

 

AC_PREREQ(2.61)

AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)

AC_CONFIG_SRCDIR([calcyx/CalcYx.c])

AC_CONFIG_HEADER([config.h])

 

# Checks for programs.

AC_PROG_CC

 

# Checks for libraries.

 

# Checks for header files.

 

# Checks for typedefs, structures, and compiler characteristics.

AC_STRUCT_TM

 

# Checks for library functions.

 

AC_OUTPUT

2.  修改configure.scan文件内容并改名为configure.in

Ø         更改名称 #mv configure.scan configure.in

Ø         更改文件内容:

AC_CONFIG_HEADER改为AM_CONFIG_HEADER

AC_CONFIG_HEADER([config.h])下添加AM_INIT_AUTOMAKE(calcyx,1.0)

AC_OUTPUT之前添加AC_CONFIG_FILES([Makefile calcyx/Makefile])

3.  手动编写Makefile.am文件(在源码目录下也需要)

AUTOMAKE_OPTIONS = foreign

 

# Note:target part

  bin_PROGRAMS = calcyx

 

 # noinst_PROGRAMS = calcyx

 

# Note:source part

  calcyx_SOURCES = CalcYx.c  CalcYxDpYx.c CalcYxLogic.c CommFunction.c temp.c test.c

  # calcyx_LDADD =

  # calcyx_LDFLAGS =

  # calcyx_DEPENDENCIES =

 

# Note:lib part

  # lib_LIBRARIES =

  # sntp_a_SOURCES =

  # sntp_a_LDADD =

  # sntp_a_LIBADD =

  # sntp_a_LDFLAGS =

 

# Note:header part

 include_HEADERS = CalcYx.h CalcYxDpYx.h CalcYxLogic.h CommFunction.h ConstDef.h DataTypeDefine.h Environ.h FromFxg.h NumLimit.h StruDef.h temp.h test.h

 

# Note:data part

# data_DATA =

 

4.  使用aclocal命令生成autom4te.cache文件夹和aclocal.m4文件

命令:#aclocal

生成文件:autom4te.cache文件夹和aclocal.m4

文件内容:参照该文件。

5.  生成配置脚本文件

命令:# autoconf

生成文件:configure

文件内容:参照该文件。

6.  生成头文件

命令:autoheader

生成文件:config.h.in

文件内容:参照该文件。

7.  生成配置Makefile用脚本文件

命令:automake --add-missing

生成文件:install-shmissingdepcomp

文件内容:参照该文件。

8.  生成Makefile文件

命令:./configure

打印信息:

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... no

checking for mawk... mawk

checking whether make sets $(MAKE)... yes

checking for gcc... gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes

checking whether we are cross compiling... no

checking for suffix of executables...

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking for style of include used by make... GNU

checking dependency style of gcc... gcc3

checking whether struct tm is in sys/time.h or time.h... time.h

configure: creating ./config.status

config.status: creating Makefile

config.status: creating config.h

config.status: executing depfiles commands

生成文件:Makefileconfig.h./config.status

9.  编译代码

命令:工程目录下make

10.               

源代码目录下make

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

automake支持三种目录模式:

1)  flat模式,所有文件都位于同一个目录中,包括源文件、头文件、其他库文件都位于当前目录中,且没有子目录。

2)  shallow模式,主要的源代码都存储在顶层目录中,其他部分则存储在子目录中。

3)  deep模式,所有源代码都存储在子目录中,顶层目录主要包含配置信息,也就是说所有源文件以及自己写的头文件位于当前目录的子目录中,而且当前目录里没有任何源文件。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1configure.scan的基本格式:

AC_INIT

  测试程序AC_PROG_CC

  测试函数库

  测试头文件

  测试类型定义

  测试结构

  测试编译器特性

  测试库函数

  测试系统调用

AC_OUTPUT

 

 

 

automake支持三种目录层次:flatshallowdeep
一个flat包指的是所有文件都在一个目录中的包。为这类包提供的Makefile.am不需要SUBDIRS这个宏。这类包的一个例子是termutils。对应咱们程序员来说:就是所有源文件及自己写的头文件都位于当前目录里面,且没有子目录。

一个deep包指的是所有的源代码都被储存在子目录中的包;顶层目录主要包含配置信息。GNU cpio是这类包的一个很好的例子,GNU tar也是。deep包的顶层Makefile.am将包括宏SUBDIRS,但没有其它定义需要创建的对象的宏。对应咱们程序员来说:就是所有源文件及自己写的头文件都位于当前目录的一个子目录里面,而当前目录里没有任何源文件。
一个shallow包指的是主要的源代码储存在顶层目录中,而各个部分(典型的是库)则储存在子目录中的包。automake本身就是这类包(GNU make也是如此,它现在已经不使用automake)。对应咱们程序员来说:就是主要源文件在当前目录里,而其它一些实现各部分功能的源文件各自位于不同目录。

前两个层次的程序编辑方法非常简单,按照上述步骤一步步即可。而第三种层次shallow稍微复杂一点,但这是我们经常写程序用到的结构。

 

原创粉丝点击