2014-11-20 3 views
1
CC = gcc 
OPTS = -W -O3 

SRCDIR=./src 
OBJDIR=./obj 
INCDIR=./inc 
BINDIR=./bin 

SRCS=$(SRCDIR)/Functions.c \ 
SRCS=$(SRCDIR)/Function1.c \ 
SRCS=$(SRCDIR)/Function2.c \ 
SRCS=$(SRCDIR)/Function3.c \ 


INCLUDE = $(addprefix -I,$(INCDIR)) 
OBJS=${SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o} 
CFLAGS = $(OPTS) $(INCLUDE) $(DEBUG) 

TARGET = $(BINDIR)/ Functions 

all: $(TARGET) 

$(TARGET): $(OBJS) 
    ${CC} ${CFLAGS} -o [email protected] $(OBJS) 

$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

Functions.c에는 Function1();을 호출하는 메인 내부가 있습니다. ..... Function3();C에서 메이크 파일 오류

은 어떻게 디버그 플래그를 추가

#ifndef

에 따라 디버그 플래그를 추가하고이 메이크 내부 디버그 컴파일러 지시문을 설정하기 위해 노력하고있어? #ifndef NDEBUG가 있습니다. #endif Functions.h에서

+2

무엇을하려고합니까? '$ (BINDIR)'디렉토리에'Functions'라는 이름의 것을 만들고 있다면'TARGET = $ (BINDIR)/Functions'과 같이'TARGET ='줄에 공간을 넣으십시오. – yellowantphil

답변

0

이어야합니다.

TARGET = $(BINDIR)/Functions 
+0

SRCS에 문제가 있습니까? SRCS = $ (SRCDIR) /Function2.c \ SRCS = $ (SRCDIR) /Function3.c \? – Ichihara26

+0

@ Ichihara26 첫 번째 다음에 각'SRCS ='를 꺼냅니다. 줄 끝의 백 슬래시가 계속됩니다. – yellowantphil

+0

그것은 obj 폴더 안에 Function3.o라는 하나의 오브젝트 파일 만 제공합니다 – Ichihara26

0
CC=gcc 
OPTS=-W -O3 
DEBUG= 
RM=rm 

SRCDIR=src 
OBJDIR=obj 
INCDIR=inc 
BINDIR=bin 

SRCS=$(SRCDIR)/*.c 

INCLUDE=$(addprefix -I, $(INCDIR)) 
OBJS=obj/Functions.o obj/Function1.o obj/Function2.o obj/Function3.o 
CFLAGS = $(OPTS) $(INCLUDE) $(DEBUG) 

TARGET = $(BINDIR)/Functions 

all: $(TARGET) 

$(TARGET): $(OBJS) 
    $(CC) $(CFLAGS) -o [email protected] $(OBJS) 

$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.c 
    $(CC) $(CFLAGS) -c $< -o [email protected] 

clean: 
    $(RM) -f $(TARGET) $(OBJDIR)/*.o 

나는 당신의 OBJS 확장 작업을 얻을 수 있지만 adove 내 끝에서 작동합니다.

+1

나는 그 와일드 카드'*'를 확장 할 것이고'rm'을'$ (RM)'으로 바꿀 수있을 것이다. 그리고'rm '에'-r'을 두는 것은 당신이 여기 필요하지 않기 때문에 저를 두려워합니다. '$ (BINDIR)'을 설정하는 것을 잊어 버린 경우, 액세스 권한이있는 시스템상의 모든 것을 삭제했다. – yellowantphil

+0

우수 포인트! 고맙습니다! – stu