2011-04-07 5 views
0

예 : 예 : xml 파서는 다음 명령 줄 명령을 사용합니다.make 파일 만들기

gcc source.c -I/usr/include/libxml2 -lxml2 -o output 

명령 줄을 사용하여 컴파일 할 때 libxml을 포함시키기 위해 이것을 사용합니다.

명령 줄 사용 대신 make 파일을 사용하면 어떻게 될까요?

답변

3
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 형태에서

+0

명령 줄 ($ (CC) 및 $ (LD) 줄) *은 공백이 아닌 탭 문자로 시작해야합니다. –

+0

-Wall은 무엇을합니까? – jarryd

+1

@ Helium3 : 대부분의 컴파일러 경고를 사용하도록 설정합니다. 일반적인 문제에 대해 알려주는 습관을 만들어야합니다. – Erik

0

:

output: source.c 
    gcc source.c -I/usr/include/libxml2 -lxml2 -o output 

이제 당신도 make output make의 말과 output 내장 얻을 수 있습니다. 당신은 자신이 출력 파일 (이 .c 접미사없이) 소스와 같은 이름이있을 수있는 경우

0

, 당신은 할 수 있습니다 :

 
CPPFLAGS = -I/usr/include/libxml2 
LDFLAGS = -lxml2 

당신의 메이크 단지 그 두 라인으로,

 
make source 

은 source.c를 찾고 해당 플래그와 함께 'source'라는 실행 파일을 생성합니다.