레이블이 코드조각인 게시물을 표시합니다. 모든 게시물 표시
레이블이 코드조각인 게시물을 표시합니다. 모든 게시물 표시

2012년 11월 8일 목요일

Makefile 예제

작성자: 박영기
작성일: 2012-11-09

주의: 띄어쓰기 4칸을 TAB으로 바꾸어야 실행 가능함.

응용프로그램용:
CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=a.out

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJECTS)


정적 라이브러리용:
CC=g++
CFLAGS=-c -Wall
SOURCES=name.cpp
OBJECTS=$(SOURCES:.cpp=.o)
TARGET=libXxx

all: $(SOURCES) $(TARGET)

$(TARGET): $(OBJECTS)
    ar cr $(TARGET).a $(OBJECTS)

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJECTS) $(TARGET).a


요건 작업중인거:
#This is prefix for the cross compiler
#Example: arm-linux-
CROSS_COMPILE ?= arm-linux-

CC=$(CROSS_COMPILE)gcc
CXX=$(CROSS_COMPILE)g++

CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=a.out

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
    $(CXX) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CXX) $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJECTS)



코드조각 - getopt

커맨드라인 프로그램 짤 때
가장 많이 쓰는 코드조각이다.

#include 
#include 

void showUsage(char* progname)
{
    printf("Usage: %s [option]\n", progname);
    printf("\t-f option\n");
}


int main(int argc, char**argv)
{

    if(argc < 2)
    {
        showUsage(argv[0]);
        return 0;
    }

    int opt;
    while( (opt=getopt(argc, argv, "hf:")) != -1)
    {
        switch(opt)
        {
        case 'h':
            showUsage(argv[0]);
            break;
        case 'f':
            printf("option is %s\n", optarg);
            break;
        }
    }


    return 0;
}