Skip to content


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++ 컨벤션으로)
  • 몇 가지 프리프로세서 옵션

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

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.

Posted in Computer.

Tagged with , , , .


8 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. deisys says

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

  2. rein says

    …형 대체 NFS에 무슨 짓을

  3. neojojo says

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

  4. rein says

    퇴근 후에 확인해보겠습니다 (__)

  5. neojojo says

    감사합니다 (__)

  6. rein says

    neojojo / CPPTask 의 버젼 문제입니다. (ant-contrib에 있는 CC Task)

    Sourceforge.net 에는 2006년 말에 올라온 파일이 마지막인데 그 파일로는 comment element가 nesting된다는 에러를 뱉습니다.
    log4cxx 메일링에 따르면 그 cpptasks.jar 파일로 빌드가 되지 않아서 (cpptask의)SVN head를 받아다가 빌드할 것을 알리고 있습니다.

  7. neojojo says

    정말 감사합니다.
    그리고 좋은 소식도 함께 올려주시니 더 좋군요 ^^

Continuing the Discussion

  1. rein's world linked to this post on 2008/02/26

    log4cxx 0.10 RC2 공개…

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



Some HTML is OK

혹은 트랙백 보내기 / or, reply to this post via trackback.