설치하고 이것저것 해보다보니 링크시에 에러도 발생하고 제대로 설치된 게 아니었더군요.
오늘 다시 삽집(삽질 좀 꽤 했습니다. 흠...)하고 설치방법이 바뀌어서 수정했습니다. STLport와 boost를 플랫폼SDK를
사용하지 않고 컴파일했습니다.
아래는 VC++ 6 에 STLport 4.6.2과 boost 1.31를 설치한 과정입니다.
STLport iostreams 을 사용하는 경우와 사용하지 않는 경우로 나눠서 설명하고 설치된 STLport를
이용해서 boost를 설치하는 방법을 적었습니다.
STLport 4.6.2 설치하기
1. STLport 다운받기
STLport는 http://www.stlport.org/download.html에서 받을 수 있습니다.
2. STLport 압축풀기
STLport-4.6.2.tar.gz 파일을 압축을 푼 다음 src 디렉토리로 이동한다.
저의 경우 D:\STLport-4.6.2 에 풀었습니다.
4. STLport 컴파일과 설치
STLport iostreams를 사용하는 경우와 사용하지 않는 경우로 나누어서 설명하겠습니다.
아래 과정은 플랫폼SDK를 사용하지 않고 설치한 경우입니다. 플랫폼SDK를 사용하지 않고 컴파일하기 위해
vcvars32.bat 를 실행한 다음 컴파일했습니다.
플랫폼SDK를 사용하실 분들은 아래 참고를 읽어주세요.
* 참고(플랫폼SDK를 사용하여 STLport를 컴파일하는 경우)
플랫폼SDK를 설치하면 환경변수 INCLUDE에 플랫폼SDK경로 부터 들어있습니다. vcvars32.bat를 실행하지 말고
컴파일합니다. 컴파일할때 "InterlockedXXX"관련 에러가 발생하는데
stl_user_config.h 의 다음 부분에 있는 주석을 지우면 됩니다. stlport\stl_user_config.h 파일의 다음 부분에 있는
stl_user_config.h 의 다음 부분에 있는 주석을 지우면 됩니다. stlport\stl_user_config.h 파일의 다음 부분에 있는
주석을 지우고 컴파일합니다.
# define _STLP_NEW_PLATFORM_SDK 1
# define _STLP_NEW_PLATFORM_SDK 1
4-1. STLport iostreams를 이용할 경우
아래의 명령을 주면 STLport iostreams를 빌드하고 해당 디렉토리로 설치합니다.
copy 안 하시고 nmake -f 파일명 clean all 이런 식으로 하셔도 됩니다.
vcvars32.bat
copy vc6.mak makefile
nmake clean all
nmake install
nmake install 후에 VC++이 C:\Program Files\Microsoft Visual Studio에 설치되어 있다면
lib, dll 파일은 C:\Program Files\Microsoft Visual Studio\VC98\Lib에
헤더 파일들은 C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport
설치됩니다.
4-2. STLport iostreams를 이용하지 않을 경우
바이너리 파일이 필요없기 때문에 컴파일 과정이 없습니다)
stlport/stl_user_config.h 파일의 다음 부분의 주석을 지우고 stlport 디렉토리를 자신이 사용할 디렉토리에 옮겨서 사용합니다.
# define _STLP_NO_OWN_IOSTREAMS 1
5. include 디렉토리 지정
VC++ 메뉴에서 Tools -> Options -> Directories 탭에서 Include Files 목록에 4-1이나 4-2의 stlport
경로를 지정해 줍니다. 여기서는 "C:\Program Files\Microsoft Visual Studio\VC98\Include\stlport"
이 됩니다.
라이브러리는 기본적으로 지정된 "C:\Program Files\Microsoft Visual Studio\VC98\Lib" 에 설치되기
때문에 설정해 줄 필요가 없습니다.
boost 1.31 설치하기
아래 설치 방법은 STLport를 이용한 boost 라이브러리를 컴파일해고 설치하는 방법입니다.
1. boost 1.31 다운받기
http://www.boost.org 의 Download에서 다운로드 받는다. SourceForge로 연결되네요.
여기에서 boost_1_31_0.tar.bz2 와 bjam-3.1.9-1-ntx86.zip 를 받습니다.
패치된 파일이 있다면 패치파일도 받습니다. 지금은 regex 패치 파일이 다음과 같은 파일명으로
올려져 있습니다. boost-1.31.0-regex-patch-20040503.zip
2. 압축풀기
다운로드 받은 boost_1_31_0.tar.bz2 을 압축을 풉니다. bjam-3.1.9-1-ntx86.zip 안에 들어있는
bjam.exe를 압축을 푼 boost 디렉토리에 넣습니다. 저의 경우 (D:\boost_1_31_0 에 풀었습니다.)
3. 패치하기
패치압축파일에 들어있는 readme.txt파일을 읽어보시면 지정된 디렉토리에 소스 파일들을 복사하라고 쓰여있습니다.
4. vcvars32.bat 실행
3. bjam 실행하기
bjam에 install 옵션을 주고 실행시키면 C: 드라이브에 Boost라는 디렉토리를 만들고 include, lib 디렉토리에
헤더 파일과 컴파일한 lib, dll 파일을 복사합니다. stage라는 옵션을 주면 설치는 하지 않고 stage라는 디렉토리에
컴파일한 lib, dll 파일 생깁니다.
3-1. STLport iostreams를 사용하지 않는 경우
도스창에서 다음과 같이 입력하면 됩니다. 각 옵션에 대한 설명은 3-2에서 하겠습니다.
bjam --prefix=c:\boost -sTOOLS=msvc-stlport -sSTLPORT_PATH=D: -sSTLPORT_VERSION=4.6.2 install
3-2 STLport iostreams를 사용하는 경우
기본설정이 사용하지 않음으로 되어 있기때문에 따로 설정을 해주어야합니다. BUILD옵션에 stlport-iostream를
on으로 설정합니다. 이 경우에는 아래와 같습니다. (한줄로 적어야 합니다.)
bjam --prefix=c:\boost \
-sTOOLS=msvc-stlport \
-sSTLPORT_PATH=D: \
-sSTLPORT_VERSION=4.6.2 \
-sBUILD="debug release <runtime-link>static/dynamic <threading>single/multi <stlport-iostream>on <stlport-cstd-namespace>global" install
각 옵션에 대해 설명을 드리면
--prefix: 설치될 디렉토리
-sSTLPORT_PATH: stlport-x.x.x 형식의 디렉토리가 있는 디렉토리 저의 경우 D:\STLport-4.6.2에 풀었기때문에 d: 라고 적었습니다.
-sSTLPORT_VERSION: 디렉토리 찾을 때 사용되기 때문에 D:\STLport-4.6.2 와 일치되도록 적습니다.
-sBUILD: 빌드옵션
<stlport-iostream>on 만 적어주면 debug모드로만 컴파일됩니다. 그 앞부분도 적어주어야 하더군요.
<stlport-cstd-namespace>global 는 컴파일하면서 vsprintf가 global namespace에 없다고
에러가 발생해서 적어주었습니다.
4. VC++ 셋팅
STLport 설치의 5번 처럼 include, library 디렉토리를 지정해줍니다.
include 디렉토리는 "C:\Boost\include\boost-1_31"로 boost-1_31까지 지정합니다.
소스에서는 #include <boost/regex.hpp>이런 식으로 boost를 적어주어야 합니다.
* 참고
다들 알고 계실꺼라 생각합니다만 혹시 모르시는 분들이 있을까봐 아래 추가합니다.
include 디렉토리와 library 디렉토리를 설정하는 부분이 Tools -> Options -> Directories에만 있는 것은 아닙니다.
STLport나 boost 라이브러리는 설치가 안 되어있는 환경도 있으니 Project Settings에 지정해 놓는 것도 좋습니다.
그 프로젝트에 필요한 헤더파일 경로와 라이브러리 경로를 dsp 파일에 저장시킬 수 있니까 소스를 관리할 때
약간은 편하리라 생각됩니다.
저의 경우에는 VC++을 설치했을때 기본적으로 추가되어있지 않은 헤더파일 경로나 라이브러리 경로는 Project Settings에
지정합니다.
- 헤더 파일 경로 추가
C/C++ 탭에서 Preprocessor를 선택하시고 Additional include directories 에 헤더 파일 경로를 적어줍니다.
여러 경로를 적어 줄때는 comma(',')로 구분하고 적어주시면 됩니다.
- 라이브러리 파일 경로 추가 (라이브러리가 별도의 경로에 있을때)
Link 탭에서 Input을 선택하시고 Additionnal library path 에 라이브러리 경로를 적어줍니다.
마찬가지로 여러 경로를 적어 줄때는 comma(',') 구분하고 적어주시면 됩니다.
댓글
댓글 쓰기