'STL'에 해당되는 글 2건

  1. [2007/01/06] [C++] STLPort 5.1.0 설치 with VC++.NET 2003
  2. [2006/10/13] [C++] STLPort 5.0.1 설치 with VC++.NET 2003

[C++] STLPort 5.1.0 설치 with VC++.NET 2003

[Manual/프로그래밍]
2005년 10월 : STLport 4.6.2 설치 (싸이월드)
2006년 03월 : STLport 4.6.2 설치 (다음 : C/C++ 연구회)
2006년 10월 : STLport 5.0.1 설치 (블로그)
2007년 01월 : STLport 5.1.0 설치 (블로그)


< about >


작년 12월 6일 STLport Ver. 5.1.0 이 Release 되면서
설치방법이 조금 변경 되었다.
새로운 설치방법을 포스팅한다고 글을 적은게 1달 전이었는데
이제서야 실행하게 되었다.
설마 이 글을 기다린 사람은 없겠지만,
만약 있다면 죄송스럽게 생각하면서 글을 시작하려고 한다.

또한, 이 글을 읽는 모든 분들께 다시 한 번 당부한다.
퍼가는 것은 자유지만 출처는 분명히 해줬으면 좋겠다.


< intro >

먼 옛날 STL은 한낱 문서상의 표준이었고,
내가 C++에 입문하던 때만 해도 STL은 아는 사람들 끼리의 물건이었다.
그러나 지금은 STL을 모르고 C++을 한다고 말할 수 없게 되었다.
그리고 STLport는 현존하는 STL 라이브리 중 가장 사랑받는 놈이다.

물론 VC++에도 내장 STL이 존재한다.
그래나 현재는 인식이 많이 바뀌었다 해도 많은 사람들이 내장 STL의 사용을 만류하고 있다.
그리고 본인도 그 생각에 동감하는 바이다.
개인적인 이유는 다음과 같다.
MSVC 내장 STL은 딩컴웨어에서 판매하는 상용 라이브러리인데,
VC 구매시에는 이미 이 라이브러리의 버전은 구버전이 되어버린다.
그리고 그에 대한 업그레이드에는 추가 비용이 들게 된다.
그에 비하면 STLport는 무료로 지속적인 업데이트를 해 나가고 있다.

현재 배포되는 STL 라이브러리들에 대한 이야기를 보려면
'Effective STL'의 50장과 부록B를 보기 바란다.


< download >

STLport는 http://sourceforge.net/projects/stlport 에서 받는다.
www.STLPort.org 라는 공식 홈페이지가 있으나
현재 업데이트가 중지된 상태이며
최신 버전은 sourceforge 에서 관리된다.
이 글이 작성되는 시점에서 배포되는 최신 버전은 5.1.0 Release 이다.


< uncompress >

STLport-5.1.0.zip 파일을 받아 압축을 풀자.
본인은 라이브러리들의 관리를 편하게 하기 위하여
VC 관련 라이브러리는 모두 F:\MSVC\Library\ 경로에 모아 놓는다.

압축이 해제되면 STLport-5.1.0 폴더가 생성된다.



< before compile >

컴파일에 앞서 옵션을 설정해 주어야 한다.
옵션 파일의 위치와 이름이 \STLport-5.0.1\stlport\stl_user_config.h 에서
\STLport-5.1.0\stlport\stl\config\user_config.h 로 바뀌었다.
해당 파일을 열어 보자.

먼저 Platform SDK를 사용한다면, 다음의 주석을 제거한다.

#define _STLP_NEW_PLATFORM_SDK 1

또한 다음의 선언문의 주석도 해제하자.

#define _STLP_VERBOSE_AUTO_LINK 1

이 선언은 컴파일 결과 자체에는 영향이 없지만
컴파일 중 현재 링크되고 있는 라이브러리를 빌드 창에 표시 하겠음을 나타낸다.
따라서 프로그램이 STLPort 라이브러리를 연결하고 있는지
컴파일 중 확인할 수 있다.


< compile >

컴파일을 위해서는 반드시 콘솔에서 작업해야 한다.
그러므로 아래의 설명은
전부 콘솔에서 이루어 진다는 것을 명심하자.

먼저 콘솔 창을 연다.
모르겠으면 'Windows Key' + R 하면 나타나는 창에 cmd 라고 적는다.

만약 VC++.NET 2003을 깔았다면
아래와 같은 패스가 있을 것이다.

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin

위 폴더에 vcvars32.bat 파일이 있다.
이 파일을 콘솔에서 실행시킨다.
그러면 환경이 준비 됐다는 의미 비슷한 말이 나온다.
(영어라 장담 못하겠다. -_-a)

이제 커맨드 창에서 F:\MSVC\Library\STLport-5.1.0\build\lib 폴더로 들어간다.
다음과 같이 입력한다.

configure -c msvc71



이제 STLport는 VC++ .NET 2003 컴파일러를 사용하게 된다.
마지막으로 인스톨 명령을 친다.
이제 컴파일 끝날 때까지 기다리도록 하자.

nmake /fmsvc.mak install


<주의>
현재 STLport 의 README 문서들이 상태가 좀 메롱 하다.
분명 STLport 5.1.0 RC3 에서 배포된 README 문서는
변경된 컴파일 방법에 대해 친절하고 정확하게 설명되어 있었는데,
이번 Release의 README 문서는 이전 버전을 그대로 복사한 것 같다.
아마 전에 RC3를 컴파일 해본 경험이 없었다면 상당히 삽질을 했을 것이다.

컴파일 방법은 \STLport-5.1.0\doc\README.msvc 를 참고하고
컴파일 옵션은 \STLport-5.1.0\build\lib\configure.bat 를 참고하기 바란다.

컴파일이 완료되면 아래와 같이 새로운 두 개의 폴더가 생긴다.
이 중 \STLport-5.1.0\bin\ 폴더에 생긴 세 개의 *.dll 파일을 system32 폴더에 복사한다.



< after compile >

컴파일이 다 끝나면,
VC++.NET 2003에서 경로 지정을 해줘야 한다.
VC++.NET 2003을 열고 도구에 가서 옵션을 선택하면 창이 열린다.
그럼 좌측 목록에 Projects 를 선택하고
하위의 VC++ 폴더를 선택한다.
우측 창의 우측 상단 콤보박스에서 포함 파일을 선택한 후
리스트에 D:\Library\STLport-5.0.1\stlport 를 추가로 적어
리스트 맨 위에 놓는다.




< finale >

이제 마음놓고 사용하시라~!!
(@,.@)>

2007/01/06 17:14 2007/01/06 17:14

[C++] STLPort 5.0.1 설치 with VC++.NET 2003

[Manual/프로그래밍]

< about >

이 문서는 2004년 본인의 작업용 문서로 시작되었다.
첫 게시물은 2005년 10월  STLPort 4.6.2를 기준으로 싸이월드에 게시 했으며,
2006년 3월 다음의 스터디 카페(지금은 버려져 있다. ㅠ.,ㅠ)에 게시한 것을
버전업 하여 이곳에 옮기는 것이다.
퍼가는 것은 자유지만 출처는 분명히 해줬으면 좋겠다.


< intro >

STLPort는 현존하는 STL 라이브리 중 가장 사랑받는 놈이다.
내가 C++을 본격적으로 입문하던 때만 해도
STL은 아는 사람들 끼리의 물건이었다.
STL의 존재를 알게 된 것도 지금 다니는 곳의 면접을 준비 하면서 였고,
STL을  공부할 당시만 해도 한국어로 된 레퍼런스 서적은 단 두 권 뿐이었다.
하나는 'C++ Standard Library 튜터리얼.레퍼런스 (원서 : C++ Standard Library)'이고,
다른 하나는 'STL 튜터리얼.레퍼런스 가이드 (원서 : STL Tutorial and Reference Guide)'이다.
나는 당시 전자를 선택했고, 몇 달 전 불가피하게 후자를 구입하게 되었으나
개인적으로 'C++ Standard Library 튜터리얼.레퍼런스'를 추천한다.

VC++ 상에서 많은 사람들이 MSVC 내장 STL의 사용을 만류하고 있으며,
본인도 가능하면 STLPort로 대체를 권한다.
여러가지 이유가 있지만,
MSVC 내장 STL은 딩컴웨어에서 판매하는 라이브러리인데
이는 제품 판매 초기에 내장되므로 사용하다보면 너무 뒤쳐진 버전이 된다는 말이며,
라이브러리를 업그레이드를 위해서는 추가 비용을 지불해야 한다는 것이 문제이다.
실제로 아직도 MSVC 6.0 이 상상 이상으로 많이 사용되는데,
MSVC 6.0 내장 STL은 형편없는 버그 덩어리로 간주되기도 한다.

현재 배포되는 STL 라이브러리들에 대한 이야기를 보려면
'Effective STL'의 50장과 부록B를 보기 바란다.


< download >

STLport는 http://sourceforge.net/projects/stlport 에서 받는다.
www.STLPort.org 라는 공식 홈페이지가 있으나
현재 업데이트가 중지된 상태이며
최신 버전은 sourceforge 에서 관리되는 듯 하다.
이 글이 작성되는 시점에서 정식 버전은 5.0.2 이며,
버전 5.1.0 이 RC2까지 진행된 상태이다.
개인적으로 5.0.2 RC2 를 설치한 적이 있으나,
뭔가 이상하여 현재 5.0.1 을 사용하면서 5.1.0 을 기다리는 중이다.


< uncompress >

STLport-5.0.1.tar.gz 파일을 받아 압축을 풀자
본인은 추가 라이브러리들의 관리를 편하게 하기 위하여
D:\Library\ 경로에 모든 라이브러리들을 모아 놓는다.
이는 개발 플랫폼이 변동이 없는 한
재 컴파일 없이 저장된 라이브러리를 컴파일러에 등록하기만 하면 된다는 장점이 있다.

압축이 해제되면 STLPort 폴더가 생성된다.
후에 Boost 라이브러리의 설치를 위해서는
이 폴더의 이름을 STLPort-5.0.1로 변경하는 것이 좋다.



< before compile >

STLport의 iostream을 사용하고자 한다면,
반드시 컴파일을 해주어야 한다.
그렇지 않다면 컴파일 과정은 생략해도 된다.

먼저 Platform SDK를 사용한다면,
설정해 주어야 할 옵션이 있다.
압축을 해제한 D:\Library\STLport-5.0.1\stlport\ 폴더에 보면,
stl_user_config.h 라는 파일이 있다.
이 파일을 열어보면,

#define _STLP_NEW_PLATFORM_SDK 1

에 주석처리가 된 것을 볼 수 있다.
이 주석처리를 해제하여 활성화 시킨다.

또한 다음의 선언문의 주석도 해제하자.

#define _STLP_VERBOSE_AUTO_LINK 1

이 선언은 컴파일 결과 자체에는 영향이 없지만
컴파일 중 현재 링크되고 있는 라이브러리를 명령 창에 표시 하겠음을 나타낸다.
따라서 프로그램이 STLPort 라이브러리를 연결하고 있는지
컴파일 중 확인할 수 있다.


< compile >

컴파일을 위해서는 반드시 콘솔에서 작업해야 한다.
그러므로 아래의 설명은
전부 콘솔에서 이루어 진다는 것을 명심하자.

먼저 콘솔 창을 연다.
모르겠으면 'Windows Key' + R 하면 나타나는 창에 cmd 라고 적는다.

만약 VC++.NET 2003을 깔았다면
아래와 같은 패스가 있을 것이다.

C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin

위 폴더에 vcvars32.bat 파일이 있다.
이 파일을 콘솔에서 실행시킨다.
그러면 환경이 준비 됐다는 의미 비슷한 말이 나온다.
(영어라 장담 못하겠다. -_-a)


이제 STLport의 압축을 해제한 폴더로 돌아간다.
본인은 D:\Library\STLport-5.0.1 이다.

이제 D:\Library\STLport-5.0.1\build\lib 로 이동하자.
여기에 보면 확장자가 *.mak 인 확장자가 무수히 많은데,
이 파일들이 가리키는 컴파일러를
STLport가 몽땅 지원한다는 얘기가 되겠다.
잠시 놀라움에 한 번 감탄해주고 넘어가자.

본인은 VC++.NET 2003을 쓰므로
버전으로는 VC++ 7.1에 해당한다.
그러므로 nmake-vc71.mak 파일을 사용하겠다.

nmake -f nmake-vc71.mak install


위 명령을 치자.
컴파일 끝날 때까지 기다리도록 하자.



< after compile >

컴파일이 다 끝나면,
VC++.NET 2003에서 경로 지정을 해줘야 한다.
VC++.NET 2003을 열고 도구에 가서 옵션을 선택하면 창이 열린다.
그럼 좌측 목록에 Projects 를 선택하고
하위의 VC++ 폴더를 선택한다.
우측 창의 우측 상단 콤보박스에서 포함 파일을 선택한 후
리스트에 D:\Library\STLport-5.0.1\stlport 를 추가로 적어
리스트 맨 위에 놓는다.




< finale >

이제 마음놓고 사용하시라~!!
(@,.@)>
2006/10/13 20:45 2006/10/13 20:45