log4cxx 빌드하기

예전에 포스팅 했던 것 처럼, log4cxx라는 log4j 프로젝트의 하위 프로젝트로 존재하는 C++ 용의 로깅 라이브러리가 있다. 다음의 내용은 이 라이브러리의 현재 HEAD 리비젼인 611128 (2008-01-10 15:26:45 +0900)을 빌드하는 과정의 이야기이다(좀 긴관계로 두 개로 나눠서(…)). 일단 빌드 환경은,

  • Microsoft Visual Studio 2005
  • Windows XP w/ SP2 32bit edition
  • Subversion 1.6 (Win32)
  • Apache Ant 1.7.0
  • Java SDK 1.6.0_03

에서 여기에 서술되지 않은 툴들을 설치하면서 진행된다.

일단 목표는 다음과 같은 빌드 파일을 만들어내는 일이다.

  • VS 2005 에서 제대로 빌드 될 것
  • wchar_t 지원
  • Debug 빌드 뿐아니라 Release 빌드의 설정도 포함되야

이 요구사항을 만족시키려면 아마도 간단한 script 정도는 추가해야한다고 가정하면서 진행했다. 이제 진행과정.

1. log4cxx HEAD revision 체크아웃

svn head revision을 구해온다.

D:\log4cxx> svn checkout http://svn.apache.org/repos/asf/logging/log4cxx/trunk apache-log4cxx

…잠시 후 체크아웃 종료

2. Ant 를 설치한다

이미 설치된 관계로 뛰어넘은 부분이지만, 설치되지 않았다면 http://ant.apache.org/ 에서 Ant 유틸리티를 받아서 설치하고 (물론 실행경로;PATH 환경변수도 수정해준다) JRE도 적당히 받아서 설치해주자 (이번엔 JDK도 있어서 건너 뛰었다).

Ant 만으로는 log4cxx를 만들어낼 수 없다. http://ant-contrib.sourceforge.net/ 에 가서 ant-contrib 과 cc-task를 받아서 설치하자. (설치 경로는 ant가 설치된 곳\lib\ 밑이면 된다; 아니면 java class path를 적당히 손봐줘도 된다)

3. 기타 라이브러리 확인

APR;apache portable runtime과 APRUtil 두 가지가 필요하다. 인터넷 연결이 존재한다면 보통 자동으로 다운로드 되지만 그렇지 않은 경우 미리 받아둬야 한다. http://apr.apache.org/ 에 가면 찾을 수 있다.

4. VC++ 2008 project 생성

D:\log4cxx\apache-log4cxx>ant build-projects-vc8

D:\log4cxx\apache-log4cxx\msvc8 이란 디렉토리에 생성된 .vcproj 들을 확인할 수 있다. 그렇지만 프로젝트 파일들 뿐이므로 바로 빌드 하기는 귀찮은 일이니 solution 파일을 만들어보자. 일단 프로젝트 파일들을 확인해보면, 일단 가장 중요한(?) 셋이

  • apr.vcproj – APR 을 위한 프로젝트
  • aprutil.vcproj – APRUtil 을 위한 프로젝트
  • log4cxx.vcproj – log4cxx 를 만들기 위한 프로젝트

그리고 테스트 목적의 실행 파일들이,

  • cppunit.vcproj – C++ unittest 프레임웍
  • log4cxx-standalone-test.vcproj – 이 밑의 프로젝트들은 문자 그대로 해당하는 테스트를 위한 것
  • log4cxx-test.vcproj
  • performance.vcproj
  • console.vcproj
  • stream.vcproj
  • trivial.vcproj

들어있다. 이 것들은 잠시 신경을 끄고(…) 원래의 목적에 맞게 빌드되려면 헤더 경로같은게 아예 하드 코딩으로 절대경로가 되어있는 관계로,

  • Header 파일 경로 (절대경로 → 상대경로)
  • Library 파일 경로 / Object code 생성 위치 (이것도 적당히 MSVC++ 컨벤션으로)
  • 몇 가지 프리프로세서 옵션

등을 설정해줘야 한다. 이 과정은 다음 포스팅에 정리해보겠다[…].

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

8 Comments

  1. 난 로그 남기는게 이리 빡센일일줄 몰랐는데… log4j로 NFS디렉토리에 로그 와다다닥(한 40대?) 남기니 Write failed 뜨면서 돌아가셔버리더라는… 로깅부터 일이야 일… ㅠㅠ

  2. 안녕하세요
    혹시 이 코멘트를 읽으실지 모르지만 한번 남겨봅니다.
    log4cxx 빌드하기를 따라해보다가 막히는 곳이 있어
    염치 불구하고 어떻게 빌드를 성공 하셨는지 자세히 알수 있을까
    하고 코멘트를 남깁니다.
    제가 했던 과정은 http://neojojo.springnote.com/pages/855130
    여기를 보시면 되구요.
    이메일은 neojojo@nate.com 입니다.
    답변 주시면 정말 감사하겠습니다.
    좋은 하루 되십시오.

  3. log4cxx 0.10 RC2 공개…

    rein이 사용 중인 C++ 용 logging 라이브러리인 log4cxx에 대해 예전에 포스팅한 글에 질문이 붙어서 간만에 메일링을 좀 뒤졌다.1
    2008년 2월 23일자 메일링에 이런게 있다.
    log4cxx 0.10.0 RC2 is now available…

Leave a Reply