jmake - 클라우드 온라인

이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 jmake 명령입니다.

프로그램:

이름


jmake - 일반 makefile 빌더

개요


제이메이크 [ CPP 옵션 ]

기술


제이메이크 에 보관된 다소 높은 수준의 설명으로 메이크파일을 작성합니다. Jmakefile 파일.
생성된 파일은 메이크파일.SH 단순한 makefile이 아니라 준비가 되었다는 뜻입니다.
와 함께 사용 메타 구성. 특히 "어디서
실행 파일 설치"는 다음에 의해 자동으로 결정됩니다. 구성 그리고 필요한 것만
매개변수가 고려됩니다.

사용 제이메이크 당신은 작성해야 Jmakefile 첫째, 사물이 존재하는 방식을 설명합니다.
세워짐. 당신의 Jmakefile C 사전을 통해 일반 템플릿 내부에 포함됩니다.
프로세서. 이는 일반적인 C /**/ 주석을 사용할 수 있지만 쉘 #은 사용할 수 없음을 의미합니다.
코멘트. C 주석은 생성된 메이크파일.SH 그러나 라인 시작
;#을 사용하면 마침내 쉘 주석으로 나타납니다. /* 문자열을 작성해야 하는 경우
생성 메이크파일.SH 그런 다음 탈출해야합니다 (그렇지 않으면 제이메이크 라고 생각할 것이다.
C 주석의 시작). /#*와 같이 * 앞에 #을 붙이기만 하면 됩니다.

마음대로 사용할 수 있는 매크로 세트가 있으며 이러한 모든 매크로는 색인에 나열됩니다.
확장할 코드 조각과 함께 파일. 보통, Jmakefile 공정하다
작고 따라서 거대한 것보다 유지 관리가 더 쉽습니다. 메이크파일. 일부 내부 강력한 명령
많은 노력을 기울이지 않고도 쉽게 휴대용 메이크파일을 작성할 수 있습니다.
다른 사람이 이미 당신을 위해 일을 했기 때문입니다 :-).

makefile을 생성하려는 경우 일반적으로 다음을 실행하지 않습니다. 제이메이크 하지만 jmkmf
래퍼이며 호출할 스크립트 제이메이크 올바른 옵션으로.

의 모든 지식 제이메이크 템플릿은 두 개의 파일에 보관됩니다. Jmake.tmpl 그리고 매크로
정의 파일 Jmake.rules. 첫 번째 파일에는 다음과 함께 두 번째 파일이 포함됩니다.
Jmakefile. 올바르게 사용하기 위해 작동 방식을 알아야 하는 경우가 있습니다.
모든 기능이 제공됩니다. 예를 들어, 특정 규칙에 대한 고유한 규칙을 작성해야 할 수 있습니다.
특정 프로젝트. 미리 정의된 규칙을 덮어쓸 수는 없지만
Jmake.규칙 파일에 추가하거나 단순히 매크로를 Jmakefile. 당신은 또한 #포함
이러한 매크로를 공유하고 코드를 복제하지 않으려는 경우 명령문.

Jmake.rules의 구문은 전혀 우아하지 않지만 다음과 같습니다.

- 파싱하기 쉽습니다(sendmail.cf 또는 troff 파일처럼).
- 규칙은 자주 변경되지 않습니다.
- XNUMX분이면 마스터할 수 있을 정도로 간단합니다. :-)

다음은 간단한 설명입니다.

1) 다양한 처리 CPP 구현:

· Final @!\ 의미: 줄의 끝, 다음 줄은 왼쪽 여백에서 시작합니다.
· 최종 @@\ 의미: 행의 끝, 다음 행은 한 탭으로 들여쓰기됩니다.

각 줄의 끝에는 항상 @!\ 또는 @@\ 중 하나가 있어야 합니다. 유일한
예외는 규칙 본문의 일부로 사용되는 매크로(예:
제거 대상 프로그램). 이 경우 첫 번째 줄( #밝히다) 해야 한다
단일 백슬래시로 끝납니다.

2) 기호 정의:

· >SYMBOL: 기호를 정의합니다.
· ?기호: : 유지 iff SYMBOL이 정의되었습니다.
· %기호: : 유지 iff SYMBOL이 정의되지 않았습니다.

?SYM은 다음과 같이 중첩(논리적 AND)될 수 있습니다.

?기호:%토큰:텍스트

SYMBOL이 정의되고 TOKEN이 정의되지 않은 경우 텍스트를 유지합니다. 구현하려면
논리적 OR, 아래 참조.

3) Makefile 대상 테스트:

· ?목표?: : 유지 만약 목표 정의됩니다.
· %목표%: : 유지 만약 목표 정의되지 않았습니다.

메이크파일 목표 예를 들어 독립 실행형 대상으로 정의됩니다.
의존하다.로컬 대상은 다음과 같이 정의됩니다.

의존하다.로컬:

또한 정의된 대상에 대해서만 유효합니다. so 멀리 생성된
메이크파일. 대상을 테스트하는 데 사용할 수 있는 술어가 아닙니다.
결국 세대 후반에 정의될 것입니다.

4) 명령:

다음으로 명령을 전달할 수 있습니다. 제이메이크. 선행 '|'로 시작합니다. 사용 가능한 명령
위치 :

· |접미사 : 추가 .SUFFIXES: makefile의 목록에 추가합니다.

· |규칙: : 추가 건물 규칙 섹션에.

· |규칙: : 이전과 동일하며 선행 탭이 있습니다.

· |건너뛰기: '-skip'으로 시작하는 줄을 찾을 때까지 텍스트를 건너뜁니다.

· |subst: 행이 변수 대체 대상이 되는 섹션을 시작합니다.
'-subst'가 발견될 때까지. 이는 Makefile.SH가 실행될 때 모든
$var 내의 인스턴스 명사 섹션은 쉘로 대체됩니다.

· |shell: 생성된 파일에서 있는 그대로 '-shell'과 일치할 때까지 섹션을 내보냅니다.
Makefile.SH. 이것은 준비하는 데 유용할 수 있습니다. |케이스 섹션. 그렇지 않다
중첩 허용 껍질 섹션을 참조하십시오.

· |case: 이 명령 뒤에는 쉘 변수 이름이 와야 합니다.
선행 '$' 기호) 및 대소문자 스타일 패턴(예: 문자열 "var in
f*"에 해당하는 "case" 테스트를 Makefile.SH에 생성합니다.
"$var" 값과 이 테스트가 참인 경우에만
Makefile.SH가 실행될 때 일치하는 '-case'가 Makefile에 생성됩니다. 그것
중첩이 가능하다 케이스 자유롭게 섹션.

· |확장 : '-expand'까지 줄 확장 . 완전한
예는 아래와 같습니다.

· |한 번 : '-한 번'까지의 텍스트는 처음에만 나타납니다.

'|' 달리 명시되지 않는 한 명령은 중첩될 수 없습니다. 특히,
간단한 구현 |건너뛰기, 넣는 것은 불가능하다 |건너뛰기 건너뛴 내부
부분. 그러나, |한 번 섹션이 가질 수 있습니다 |건너뛰기 섹션. 중첩이 허용됩니다
|케이스 마음대로 섹션.

논리적 OR을 구현하는 방법은 다음과 같습니다.

/* SYMBOL을 구현하거나 TOKEN을 구현하지 않음 */
?SYMBOL:text /* SYMBOL인 경우 텍스트 유지 */
%기호:|건너뛰기
%TOKEN:text /* TOKEN이 아닌 경우 텍스트 유지 */
-건너 뛰기

실제로 이것은 텍스트가 두 번 나타나야 하기 때문에 보기 흉합니다. 다행스럽게도 나는
해당 구성을 사용하지 마십시오. :-)

실제로 이미 짐작하셨겠지만 논리적 OR을 구현하는 가장 좋은 방법은
De Morgan의 법칙을 사용하는 것입니다.

(p 또는 q) 아님 <=> p 및 q 아님

/* SYMBOL을 구현하거나 TOKEN을 구현하지 않음(시도 #2) */
%기호:?토큰:|건너뛰기
text /* SYMBOL이거나 TOKEN이 아닌 경우 */
-건너 뛰기

논리에 관심이 없다고 누가 말했습니까? ;-)

확장은 다음과 같이 수행됩니다. 확장 명령. 일부를 방지하기 위해 제공되었습니다.
몇 가지 바보 같은 줄을 반복해야 할 때 makefile의 성가신 쓰기
예를 들어 파일 이름이 다릅니다. 먼저 예를 살펴보겠습니다.

|a!foo 바 확장! b!네 아니오!
!ㅏ::
에코 !a, !b
-확장하다

그런 다음 두 개의 규칙이 인쇄되고 첫 번째에 대한 (a,b)의 값은 (foo,
예), 두 번째는 (바, 아니오). 대체는 '!'로 제어됩니다. 성격.
대체할 단어가 다른 단어의 일부인 경우 ^^ 구문으로 분리합니다.
예: !b^^c. 다음에서 Makefile 매크로를 사용할 수 있습니다. , 그리고 그들은
jmake에 의해 확장됩니다. 이것이 원하는 것이 아닌 경우 첫 번째 '$' 기호를 이스케이프하십시오.
(이것은 Makefile 이스케이프입니다. 즉, '$'를 두 번 사용해야 합니다.
백슬래시). A //는 null 대체 값을 나타냅니다.
^^^ 구문은 ^처럼 동작합니다. 즉, 제거되지만
^^^ 뒤에 공백이 있습니다. 매크로 인수 앞에 무언가를 추가하면
그 매크로 인수는 그 앞에 공백으로 작성되었습니다.
해당 인수의 최종 값 직전에 무언가를 연결합니다.

다음은 확장 매크로를 사용할 수 있는 방법을 보여주는 또 다른 예입니다. 그것은
정의 Jmake.규칙 으로 :

#define Expand(규칙, 패턴) @!
|패턴 @!를 확장합니다.
규칙 @!
-확장하다

그래서 우리는 Jmakefile:

|건너뛰기
A = 푸 바
-건너 뛰기

#define 규칙 @!
$(DIR)/!a^^.o: !a^^.o @@
$(CC) -c !a^^.c @@
$(MV) !a^^.o $(디렉터리)

확장(규칙, a!$(A)!)

에서 생성됩니다 메이크파일.SH:

$(DIR)/foo.o: foo.o
$(CC) -c 푸오.c
$(MV) foo.o $(DIR)

$(DIR)/bar.o: bar.o
$(CC) -c 바.c
$(MV) 바.오 $$(DIR)

'A' 선언은 건너 뛰기에 표시되지 않도록
Makefile.SH를 생성했지만 제이메이크 위한
패턴에서 대체.

확장의 수는 가능한 값의 수에 따라 결정됩니다.
먼저 매개변수. 다른 매개변수의 대체 값이 적으면
공허한 것.

'-expand' 끝에 정규식을 추가할 수 있습니다. 이 정규
표현식은 각 라인의 끝에서 최종 확장 세트에서 제거됩니다.
구문을 사용하여 확장된 항목에서 대체를 수행할 수도 있습니다.
('f'가 확장 변수인 경우) !f:= 어디에 그리고 두 가지 일반
표현식(공백 없음). 패턴 패턴으로 대체됩니다
(첫 번째 항목만 대체됩니다).

마지막으로 확장 섹션에서 값이 계산되는 변수를 참조할 수 있습니다.
다른 확장을 통해 일반을 쉽게 정의할 수 있습니다. Jmakefile.

예:

SRC = foo.c bar.c
목적어 =
|f!$(SRC) 확장!
!f:\.c=\.o
-확장하다 \
주식회사 =
|f!$(OBJ) 확장!
!f:\.o=\.h
-확장하다 \

에서 생성됩니다 메이크파일.SH:

SRC = foo.c bar.c
목적어 =
푸.오
바오
주식회사 =
푸.h
바.h

정규 표현식에서 다음과 같은 특수 문자를 보호하는 것을 잊지 마십시오.
백 슬래시, 포인트 등 ...

The 일단 명령에 이름이 붙습니다. 이름이 처음 나타날 때 한 번
구성이 무시되고 '-once'까지의 텍스트가 생성된
Makefile.SH. 그러나 동일한 이름의 향후 발생은 무시됩니다(일단
처럼 행동할 것이다 건너 뛰기).

예:

|일단 this_is_a_name

-한 번

The 껍질 명령을 사용하여 Makefile.SH에서 쉘 조각을 생성할 수 있습니다. 을 위한
인스턴스, Jmakefile의 다음 섹션:

|쉘
케이스 "$d_usegtk1"
정의) glib=1; gtk=1;;
그 C
-껍질

Makefile.SH에 동봉된 조각이 생성되어 계산됩니다.
의 가치 말 잘하는 그리고 gtk 구성 변수를 기반으로 하는 변수
d_usegtk1 Configure를 실행하여 설정합니다.

차례로 이것은 다음에서 사용할 수 있습니다. 케이스 부분을 ​​활성화하는 섹션
glib-1.x를 사용하여 GTK1용으로 빌드할 때만 Makefile:

|케이스 글리브 1
디스플레이:
echo "glib-1.x용 빌드"
-사례

이 섹션은 Makefile.SH에서 다음과 같은 것을 생성합니다.

!안돼!서브스!
케이스 "$glib"
1)
$spitshell >>Makefile <<'!NO!SUBS!'
디스플레이:
echo "glib-1.x용 빌드"
!안돼!서브스!
;;
그 C
$spitshell >>Makefile <<'!NO!SUBS!'

그리고 Makefile.SH를 실행할 때 위의 "표시" 규칙은 다음과 같은 경우에만 나타납니다.
glib-1.x용 빌드. 결승전의 형태 Makefile 따라서 의존할 수 있습니다
때 선택한 구성 옵션 구성 실행되었다.

5) 초기화:

· + : 전체 줄을 초기화 섹션에 넣습니다.
· ++기호 : 추가 SYMBOL 매크로에.

6) 사용자 정의 변수:

사용자는 C에서 사용할 추가 플래그로 CFLAGS, LDFLAGS 또는 DPFLAGS를 정의할 수 있습니다.
컴파일, 연결 단계 또는 종속 대상. 따라서 약간의 추가가 가능합니다.
-I 또는 특정 하위 디렉토리의 Makefile용 라이브러리와 같은 플래그.

onworks.net 서비스를 사용하여 온라인에서 jmake 사용



최신 Linux 및 Windows 온라인 프로그램