| HOME / 정보공유 / AIX 명령어 모음

imake
imake 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.tmpl 및 Imakefile을 겹쳐씁니다.
IMAKE_TEMPLATE는 일반적으로 다음 파일들을 읽습니다.
매개변수가 cpp 기호로서 지정되는 기계 종속 매개변수 파일
사이트 고유의 매개변수 파일
변수를 정의하는 파일
make 명령 규칙 작성을 위한 cpp 매크로 함수가 들어 있는 파일
현재 디렉토리의 Imakefile(INCLUDE_IMAKEFILE에 의해 지정됨)
Imakefile 파일은 매크로 함수를 사용하여 구축할 목표를 나타내며, imake 명령은 적절한 규칙을 작성합니다.
Imake 구성설정 파일에는 두 유형의 변수, imake 변수 및 make 변수가 들어 있습니다. imake 변수는 imake 명령이 수행될 때 cpp에 의해 해석됩니다. 규칙에 따라 대소문자가 구분되지 않습니다. 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 generic variables
site.def site-specific, BeforeVendorCF defined
*.cf machine-specific
*Lib.rules shared library
site.def site-specific, AfterVendorCF defined
Imake.rules rules
Project.tmpl X-specific variables
*Lib.tmpl shared library variables
Imakefile
Library.tmpl library rules
Server.tmpl server rules
Threads.tmpl multi-thread rules
주: site.def 파일이 *.cf 파일의 앞뒤에 두 번 포함됩니다. 대부분의 사이트 조정이 *.cf 파일 뒤에 지정됨에도 불구하고, 컴파일러의 선택과 같은 일부 조정은 다른 변수의 설정을 좌우할 수 있으므로 앞에서 지정되어야 합니다.
site.def 파일이 처음으로 포함될 때 BeforeVendorCF 변수가 정의되고, 두 번째에 AfterVendorCF 변수가 정의됩니다. site.def 파일의 모든 코드는 이 기호 중 하나에 대해 #ifdef 매크로 내부에 배치되어야 합니다.
플래그
-D Define 디렉토리 고유 변수를 설정하기 위해 cpp에 직접 패스됩니다. 예를 들어, X-windows는 이 플래그를 사용하여 TOPDIR 변수를 코어 분산의 상단을 포함하고 있는 디렉토리의 이름으로 설정하고, CURDIR 변수를 상단에 대해 상대 경로인 현재 디렉토리의 이름으로 설정합니다.
-e imake 명령이 생성된 Makefile을 실행하도록 지시합니다. 디폴트는 사용자에게 맡기는 것입니다.
-f FileName 디렉토리당 입력 파일의 이름을 지정합니다. 디폴트는 Imakefile 파일입니다.
-I Directory (대문자 i) imake 템플리트 및 구성설정 파일이 있는 디렉토리를 지시하도록 cpp에 직접 패스됩니다.
-C FileName 현재 디렉토리에 구축되는 .c 파일의 이름을 지정합니다. 디폴트는 Imakefile.c입니다.
-s FileName make 명령을 호출하지 않고, 생성될 make 설명 파일의 이름을 지정합니다. FileName 변수가 -(대쉬)인 경우, 출력은 stdout에 기록됩니다. 디폴트는 Makefile을 생성하되 실행하지는 않는 것입니다.
-T Template cpp 명령이 사용하는 마스터 템플리트 파일(보통 -I로 지정된 디렉토리에 위치)의 이름을 지정합니다. 디폴트는 Imake.tmpl입니다.
-v imake가 Makefile을 생성하기 위해 사용하고 있는 cpp 명령 행을 인쇄하도록 지시합니다.
환경 변수
주: 다음 환경 변수는 설정할 수도 있으나, imake 명령이 수행될 때 명확하지 않은 종속성을 유발할 수도 있기 때문에 사용하지 않는 것이 좋습니다.
IMAKEINCLUDE 정의되는 경우, C 프리프로세서에 대한 include 인수를 지정합니다. 예를 들어, 다음은
-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 명령