본문 바로가기
컴퓨터일반

Mingw Makefile 을 사용한 빌드

by __observer__ 2012. 10. 28.
반응형

윈도우에서 gcc 를 사용할 때 저는 아래와 포스팅에서 밝힌 바와 같이 codeblock을 주로 사용합니다.

 


2012/10/14 - [유틸] - Codeblock doxygen plugin DoxyBlocks


2012/08/26 - [컴퓨터일반] - CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습


2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기



codeblock 과 mingw 를 통해 GCC 를 사용하지만, 역시나 IDE 를 사용하여 개발하는데 익숙하다 보니

 

Command Line 을 통한 빌드에는 참 익숙해 지지가 않더군요.

 

그래도 열심히 makefile 도 만들어 보고 command line 을 통한 빌드에 익숙해 지려고 노력하고 있습니다.

 

간단하게 아래 그림과 같은 코드에 C++ 코드에 대한 빌드시~

 

<main.cpp>

#include <iostream>

#include <cstdio>

#include "test.h"

 

using namespace std;

 

int main()

{

cout << "Hello world! make test" << endl;

cout << TTTT << endl ;

getchar();

return 0;

}

 

< test.h>

#ifndef TEST_H_INCLUDED

#define TEST_H_INCLUDED

#define TTTT (5678)

#endif // TEST_H_INCLUDED

 

makefile 은 다음과 같습니다.

 

< makefile>

WORKDIR = %cd%

 

CC = gcc.exe

CXX = g++.exe

AR = ar.exe

LD = g++.exe

WINDRES = windres.exe

 

INC =

CFLAGS = -Wall -fexceptions

RESINC =

LIBDIR =

LIB =

LDFLAGS =

 

INC_RELEASE = $(INC)

CFLAGS_RELEASE = $(CFLAGS) -O2

RESINC_RELEASE = $(RESINC)

RCFLAGS_RELEASE = $(RCFLAGS)

LIBDIR_RELEASE = $(LIBDIR)

LIB_RELEASE = $(LIB)

LDFLAGS_RELEASE = $(LDFLAGS) -s

OBJDIR_RELEASE = obj\\Release

DEP_RELEASE =

OUT_RELEASE = bin\\Release\\Test.exe

 

OBJ_RELEASE = $(OBJDIR_RELEASE)\\main.o

 

all: release

 

clean: clean_release

 

 

before_release:

    cmd /c if not exist bin\\Release md bin\\Release

    cmd /c if not exist $(OBJDIR_RELEASE) md $(OBJDIR_RELEASE)

 

after_release:

 

release: before_release out_release after_release

 

out_release: $(OBJ_RELEASE) $(DEP_RELEASE)

    $(LD) $(LDFLAGS_RELEASE) $(LIBDIR_RELEASE) $(OBJ_RELEASE) $(LIB_RELEASE) -o $(OUT_RELEASE)

 

$(OBJDIR_RELEASE)\\main.o: main.cpp Test.h

    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c main.cpp -o $(OBJDIR_RELEASE)\\main.o

 

clean_release:

    cmd /c del /f $(OBJ_RELEASE) $(OUT_RELEASE)

    cmd /c rd bin\\Release

    cmd /c rd $(OBJDIR_RELEASE)

 


makefile 이 들어있는 폴더에서 간단하게 다음과 같이 mingw32-make 라고 명령어를 쳐 넣어 주면~ 아래 그림처럼 간단하게 빌드가 되더군요.

 

물론 mingw32-make.exe 가 들어있는 폴더가 system path 로 잡혀 있어야 겠죠~

 

 

 


반응형

댓글