· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Mate Project

mate project manual 입니다. 앞으로 수정이 많이 필요하겠군요... 일단 올려봅니다.


1. 프로젝트 소개


1.1. 소개

mate( http://mate.kldp.net ) 는 make template 의 약자이다. 동료, 친구를 뜻하는 mate 또는 체스의 mate 일 수도 있다. makefile 의 explicit dependency 만을 (무식하게) 사용해서 각종 컴파일러와 운영체제 등에서 손쉽게 프로그램을 빌드하고 테스트할 수 있는 환경을 구축하는 것이 목표이다. 그리고 vim 에디터에서 활용 가능하고, vim 관련 파일을 제공한다.

1.2. 형식

이 프로젝트는 고유의 특별한 개발 환경을 제공하는 것은 아니다. 미리 정의된 템플릿 make 파일과 심볼 등에 기반해서, makefile 을 작성하여, makefile을 플렛폼에 따라 별도로 작성하지 않고, 필요한 경우 후처리등을 통해 makefile 의 호환성을 유지하는 것이다.

1.3. 목표

이 프로젝트는 개인 개발 환경을 구축하기 위해 짧지 않은 시간 동안 시행 착오를 겪어온 것으로부터 개선되어왔다. 이 프로젝트는 두가지 궁극적인 목표가 있다.

  • 우선 이 프로그램 빌드(build) 환경은 이미 공개했거나 ( coral library project, http://coral.kldp.net ) 공개될 프로젝트들에 공통적으로 사용된다.

  • 또한 프로젝트를 공개함으로써, 개인적 개발 환경을 좀 더 범용성을 띨 수 있도록 하는 것이다.

1.4. 참여


이 프로젝트는 다수의 개발자가 참여해서 그 효용성을 평가하는 것이 중요하다고 생각한다. 게다가 이 프로젝트는 무언가 특별한 것을 다루는 것도 아니므로, 크게 난이도가 있는 것도 아니다. 미리 작성된 makefile 템플릿, bash script, batch file, c로 작성된 몇가지 유틸리티, unix, cygwin 또는 그에 상응하는 명령어 등을 통해 빌드 환경의 편의를 도모하는 것이 주요 골자다.

숙련된 개발자들인 경우, 자기 고유의 개발 환경을 갖추고 그 방식대로 일하는 것이 일반적일 것이므로, 나는 개발 환경이 체계화되지 않은 초중급 개발자가 이 프로젝트에 관심을 가졌으면 하는 바램이다. 물론 숙련된 개발자들의 참여는 보다 좋은 결과를 얻을 수 있도록 할 것이지만, 현실적으로 그럴 가능성이 없어보이네요... 많은 의견이 오고 갈수록 보다 범용화 될 수 있을 것으로 기대한다.

1.5. 미래


이 프로젝트가 성과를 거둠으로써, 최근 긴 시간 동안 수정 사항이 커밋되지 않은 coral library project ( http://coral.kldp.net ) 로부터, 아직 공개되지 않은 IMA project 및 Orion project ( http://www.megapass.co.kr/~heesc22/orion/h_page.htm ) 을 순차적으로 공개할 수 있을 것이다.

2. 빌드 환경


2.1. 지원하는 환경


현재 다음과 같은 환경에서 테스트되었다.

운영체제 : unix, symbian, windows, wince, dos 등

컴파일러 : gcc, vcc, bcc, java 등

각 환경마다 특수한 상황이 있고, 미진하게 개발된 부분이 있으며, 수정되면서 제대로 작동하지 않게되는 경우도 있다. 개인 필요에 의해 사용할 때마다 수정되는 경향이 원인인데, 앞으로 개선해가야 한다.

2.2. 필요한 외부 명령어들

cygwin 이 설치돼 있으면 별도 설치할 것은 없음. 더 정리가 필요함.

2.3. 간단한 예제


2.3.1. 소스 파일 하나로 실행 파일 작성

# 소스 파일과 경로 지정한다.
EX_SRC=intmax
EX_SRCPATH=$(MK_DEVEL)/test

# 템플릿을 사용한다.
include $(MK_TEMPLATE_ROOT)/symbol.mk
include $(MK_EXECUTE)

# 깨끗이 하기
clean:
	make -f test.mk clean_execute


2.3.2. 별도의 소스 파일 지정 ( 명시적 의존성 사용 )


EX_SRC=intmax
EX_SRCPATH=$(MK_DEVEL)/test
EX_OBJ=$(MK_OUT)/func.$(OBJ_EXT)

include $(MK_TEMPLATE_ROOT)/symbol.mk
include $(MK_EXECUTE)

# 의존성 정의
$(MK_OUT)/func.$(OBJ_EXT) : $(MK_DEVEL)/test/func.c
	$(EX_CC) $(MK_DEVEL)/test/func.c

clean:
	make -f test.mk clean_execute
	$(MK_RM) $(MK_OUT)/func.$(OBJ_EXT)

2.3.3. 공유 라이브러리 작성

SH_NAME=$(SH_SRC)
SH_SRC=dltest
SH_SRCPATH=$(MK_DEVEL)/test/coral
include $(MK_TEMPLATE_ROOT)/symbol.mk
include $(MK_SHARED)

clean:
	make -f shared.mk clean_shared

2.4. mate project SCM 에 올라있는 현재 상태로 사용하기 위해...


우선 자신의 환경에 맞지 않는 등의 문제로 애로 사항이 꽃 필 것이지만, 현재 상태로도 몇가지 제약을 지킨다면 사용은 가능하다. 여기서 기술된 사항 중 누락된 것은 보강해야 할 것이고, 꽃 피는 애로 사항들을 잠재우기 위한 범용화 방안이 필요하다.

2.4.1. 사용하는 3대 환경 변수

디렉토리 구조를 참고하여 다음 환경 변수를 설정해야 한다.
  • CORE : CORE 경로를 지정한다.
  • EXTRA : EXTRA 경로를 지정한다.
  • FILE : 프로그램 설치 경로를 지정한다.

2.4.2. 디렉토리 구조

  • $CORE/devel : 기본 개발 경로가 된다.
  • $CORE/devel/make : mate project 의 make 경로
  • $CORE/devel/etc : mate project 의 etc 경로
  • $CORE/devel/util : mate project 의 util 경로
  • $EXTRA/temp/volatile : temp 파일 경로
  • $EXTRA/devel/lib/(platform)/shared : 공유 라이브러리 출력 경로. 예를 들어, unix 인 경우 $EXTRA/devel/lib/unix/shared
  • $EXTRA/devel/lib/(platform)/(compiler) : 정적 라이브러리 출력 경로. 예를 들어, win32, vcc 인 경우 $EXTRA/devel/lib/win32/vcc
  • $EXTRA/devel/out/(platform) : 실행 파일 출력 경로. 예를 들어, win32 인 경우 $EXTRA/devel/out/win32
  • $EXTRA/devel/out/(platform)/(compiler)/mode : 목적 파일 출력 경로. 예를 들어, unix, gcc, debug 인 경우 $EXTRA/devel/out/unix/gcc/d, release 인 경우 $EXTRA/devel/out/unix/gcc/r
  • $FILE/devel/gcc : cygwin 설치 경로. 현재로는 반드시 여기.
  • $FILE/devel/msdev : vc98 설치 경로. 현재로는 반드시 여기.
  • $FILE/devel/vs2005 : vs2005 설치 경로. 현재로는 반드시 여기.
  • $FILE/devel/cedev : ce 개발 환경 4.0 설치 경로. 현재로는 반드시 여기.

3. vim 과 연동

vim 의 사용자 명령을 통해 빌드하고, 오류를 수정하고, CVS 를 통한 소스 관리 등을 할 수 있다.

3.1. 준비 사항


  • cygwin 을 사용하는 경우, /bin 디렉토리가 마운트 되어 있어야 한다.

3.2. MAKE 명령


  • 형식 : MAKE (parameters) name mode : 빌드할 현재 프로젝트 설정. 예를 들어, 디버그 모드 coral 프로젝트인 경우, MAKE coral d
  • 파라미터 : 파라미터는 $MK_DEVEL/make/(name).mk 파일이 존재하지 않거나, name 및 mode 가 주어지지 않은 경우에만 유효하다.
    • MK_MAKEPATH : 프로젝트 파일이 존재하는 경로를 지정한다. 대개 MS Visual Studio 처럼 고유한 프로젝트 파일을 갖는 개발 환경이, 해당 파일을 인자로 명령행에서 빌드하는 기능을 제공하는 경우 사용된다.
    • MK_NAME : MK_MAKEPATH 와 결부되며, 프로젝트 파일의 이름을 지정한다. 이 파라미터가 지정되지 않는 경우 MK_MAKEPATH 에서 경로 분리자로 구분되는 최종 요소의 이름을 그대로 사용한다.
    • MK_CONFIG : 플렛폼을 설정한다. 이 파라미터가 주어지지 않는 경우, 플렛폼 이름은 generic 으로 간주된다.

3.3. 기타 사용자 명령

  • MAKEFFILE : 현재 설정된 프로젝트의 makefile 을 연다.
  • MAKESRC : 현재 설정된 프로젝트의 소스 설정 파일을 연다.
  • COMPILER name platform : 빌드에 사용할 컴파일러를 설정한다. 예를 들어, win32 에서 vcc 를 사용할 경우 COMPILER vcc win32
  • CVSIMPORT path : path 위치를 cvs 로 임포트. path 는 $MK_DEVEL 에 대한 상대 경로로 지정된다. MK_DEVEL 은 기본적으로 $CORE/devel 로 설정된다.
  • CVSEXPORT src dst : src 위치를 dst 로 익스포트
  • CVSCHECKOUT name : name 을 checkout. name 이 생략되면, 현재 편집 중인 파일 체크아웃
  • CVSUPDATE name : name 을 update. name 이 생략되면, 현재 편집중인 파일 업데이트
  • CVSCOMMIT name : name 을 커밋. name 이 생략되면, 현재 편집 중인 파일 커밋
  • CVSADD name : name 을 추가. name 이 생략되면, 현재 편집 중인 파일 추가
  • PUT name: netrw 를 이용하여 FTP 업로드. name 이 생략되면, 현재 편집 중인 파일 업로드
  • GET name : netrw 를 이용하여 FTP 다운로드. name 이 생략되면, 현재 편집 중인 파일 다운로드
  • DATE : 현재 날짜를 소스에 삽입
  • EXTRA : $EXTRA 경로를 대체
  • BASE : 개발 base 경로를 전환. 예를 들어, 노트북 사용시 외장 하드와 같은 저장 장치를 주 개발 경로로 사용할 때 이 명령을 응용 할 수 있다.
  • 등...





sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-19 11:28:44
Processing time 0.0400 sec