예 : 예 : xml 파서는 다음 명령 줄 명령을 사용합니다.make 파일 만들기
gcc source.c -I/usr/include/libxml2 -lxml2 -o output
명령 줄을 사용하여 컴파일 할 때 libxml을 포함시키기 위해 이것을 사용합니다.
명령 줄 사용 대신 make 파일을 사용하면 어떻게 될까요?
예 : 예 : xml 파서는 다음 명령 줄 명령을 사용합니다.make 파일 만들기
gcc source.c -I/usr/include/libxml2 -lxml2 -o output
명령 줄을 사용하여 컴파일 할 때 libxml을 포함시키기 위해 이것을 사용합니다.
명령 줄 사용 대신 make 파일을 사용하면 어떻게 될까요?
SOURCES:=source.c
OBJECTS:=$(SOURCES:%.c=%.o)
CC=gcc
CFLAGS=-g -Wall -I/usr/include/libxml2
LD=gcc
LDFLAGS=
LIBS=-lxml2
TARGET:=output
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LD) -o [email protected] $(OBJECTS) $(LDFLAGS) $(LIBS)
.c.o:
$(CC) $(CFLAGS) -c $< -o [email protected]
depend:
$(CC) $(CFLAGS) -MM $(SOURCES) > .depend
clean:
rm -f $(OBJECTS) $(TARGET)
.depend: depend
include .depend
당신은, 목표, CFLAGS, LDFLAGS과 LIBS를 /에 추가 한 후, 템플릿으로 사용할 소스를 수정할 수 있습니다. Makefile은 들여 쓰기 (indentation)를 위해 TAB이 필요합니다. 그래서 이것을 복사하여 붙이면 공백을 고쳐야합니다. 그 simpliest 형태에서
:
output: source.c
gcc source.c -I/usr/include/libxml2 -lxml2 -o output
이제 당신도
make output
make
의 말과
output
내장 얻을 수 있습니다. 당신은 자신이 출력 파일 (이 .c 접미사없이) 소스와 같은 이름이있을 수있는 경우
, 당신은 할 수 있습니다 :
CPPFLAGS = -I/usr/include/libxml2 LDFLAGS = -lxml2
당신의 메이크 단지 그 두 라인으로,
make source
은 source.c를 찾고 해당 플래그와 함께 'source'라는 실행 파일을 생성합니다.
명령 줄 ($ (CC) 및 $ (LD) 줄) *은 공백이 아닌 탭 문자로 시작해야합니다. –
-Wall은 무엇을합니까? – jarryd
@ Helium3 : 대부분의 컴파일러 경고를 사용하도록 설정합니다. 일반적인 문제에 대해 알려주는 습관을 만들어야합니다. – Erik