AIX命令参考大全,卷 3,i - m - imake 命令

[ 页的底部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]

AIX命令参考大全,卷 3,i - m

imake 命令

用途

make 命令的 C 预处理器接口。

语法

imake [ -DDefine ] [ -IDirectory ] [ -TTemplate ] [ -f FileName ] [ -C FileName ] [ -s FileName ] [ -e ] [ -v ]

描述

imake 命令从模板、cpp 宏功能集和名为 Imakefile 的每个目录输入文件生成 Makefiles。该命令保持机器相关性(如编译器选项、备用命令名和特殊的 make 命令规则)与要构建的项的描述分开。

imake 使用任何在命令行上传递的 -I-D 标志调用 cpp,并向它传递以下三行内容:

#define IMAKE_TEMPLATE "Imake.tmpl"
#define INCLUDE_MAKEFILE "Imakefile"
#include IMAKE_TEMPLATE

通过使用 -T-f 标志来分别覆盖 Imake.tmplImakefile

IMAKE_TEMPLATE 通常读以下文件:

Imakefile 文件使用宏功能来表示要构建的目标,imake 命令生成相应的规则。

Imake 配置文件包含两种类型的变量,imake 变量和 make 变量。当运行 imake 命令时,由 cpp 解释 imake 变量。根据约定,它们不区分大小写。通过 make 命令将 make 变量写入 Makefile 以备日后解释。 根据约定,make 变量是大写的。

规则文件(在配置目录中通常命名为 Imake.rules)包含根据当前平台配置的多种 cpp 宏功能。imake 命令使用换行(回车符)替换任何出现的字符串 ``@@'' 以支持生成不止一行的 make 规则的宏。例如,宏:

#define   program_target(program, objlist)        @@\
program:  objlist                                 @@\
          $(CC)  -o  $@  objlist  $(LDFLAGS)
  

这时以 program_target(foo,foo1.o foo2.o) 调用的将扩展到

foo:      foo1.o  foo2.o
          $(CC)  -o  $@  foo1.o  foo2.o  $(LDFLAGS)

在 cpp 将多个制表符和空格减少为单一空格的系统上,imake 命令尝试后退任何必要的制表符(make 命令区分制表符和空格)。鉴于此原因,在命令行中的所有冒号(:)之前加反斜杠 (\)。

与 AIXwindows 一起使用

对于源树中的完全构建和外部软件构建,AIXwindows 广泛使用 imake 命令。设置两个特殊变量 TOPDIR 和 CURDIR 以更容易地使用相对路径名生成参考文件。例如,自动生成以下命令以在 lib/X 目录(相对于源的开头部分)中构建 Makefile

%  ../.././config/imake  -I../.././config  \
             -DTOPDIR=../../.  -DCURDIR=./lib/X

要构建源树外部的 AIXwindows 程序,定义特殊符号 UseInstalled 并省略 TOPDIR 和 CURDIR 变量。如果正确安装了配置文件,则可以使用 xmkmf命令。

imake 命令读以下文件(当通过 AIXwindows 使用时)。

注:缩进的格式表示包括其它文件的文件。

Imake.tmpl                  类属变量
   site.def                 特定站点,BeforeVendorCF 已定义
         *.cf               特定机器
             *Lib.rules     共享库
   site.def                 特定站点,AfterVendorCF 已定义
   Imake.rules              规则
   Project.tmpl             特定于 X 的变量
         *Lib.tmpl          共享库变量
Imakefile
   Library.tmpl             库规则
   Server.tmpl              服务器规则
   Threads.tmpl             多线程规则

注:包括两次 site.def 文件(在 *.cf 之前和之后)。虽然多数位置定制都在 *.cf 文件之后指定,但一些位置定制(如编译器的选择)需要在该文件之前定制,因为其它变量设置可能取决于它们。

第一次包括 site.def 文件时,定义 BeforeVendorCF 变量,第二次时定义 AfterVendorCF 变量。 site.def 文件中的所有代码都应该放置在 #ifdef 宏中以获取这些符号之一。

标志

-DDefine 直接传递到 cpp 以设置特定于目录的变量。例如,X-windows 使用该标志将 TOPDIR 变量设置为包含核心分发的开头部分的目录名,而将 CURDIR 变量设置为与该开头部分相关的当前目录名。
-e 表示 imake 命令应该执行已生成的 Makefile。缺省值将把它留给用户。
-f FileName 指定每个目录输入文件的名称。缺省值为 Imakefile 文件。
-IDirectory (大写 i)直接传递给 cpp 以表示 imake 模板和配置文件所在的目录。
-C FileName 指定在当前目录中构造的 .c 文件的名称。缺省值为 Imakefile.c
-s FileName 指定要生成的 make 描述文件的名称,但不调用 make 命令。 如果 FileName 变量是 -(连字符),则将输出写为 stdout。缺省值将生成但不执行 Makefile
-TTemplate 指定通过 cpp 命令使用的主模板文件(通常位于与 -I 一起指定的目录中)的名称。缺省值为 Imake.tmpl
-v 表示 imake 应该打印正在用来生成 Makefilecpp 命令行。

环境变量

注:可以设置以下环境变量,但不推荐使用这些变量,因为当运行 imake 命令时,它们会产生不太明显的依赖性。
IMAKEINCLUDE 如果已定义,请指定 C 预处理器的包含自变量。 例如:

-I/usr/include/local 
IMAKECPP 如果已定义,请指定至预处理器程序的有效路径。例如:

/usr/local/cpp

缺省值为 /lib/cpp 程序。

IMAKEMAKE 指定至 make 程序的有效路径,如 /usr/local/make。缺省情况下,imake 使用通过使用 execvp 子例程发现的任何 make 程序。只有指定了 -e 标志才使用该变量。

示例

imake -I/usr/lib/X11/config -DTOPDIR=/usr/lpp/X11/Xamples

文件

/usr/tmp/tmp-imake.nnnnnn 指定 cpp 预处理器的临时输入文件。
/usr/tmp/tmp-make.nnnnnn 指定 make 的临时输入文件。
/lib/cpp 缺省 C 预处理器。

相关信息

make 命令、xmkmf 命令。

[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 | 法律条款 ]