MyGUI Windows에서 Visual Studio 환경 빌드

 네이티브 C++ 기반 GUI 미들웨어 리서치 결과로 CEGUI R&D를 했었지만 VS 2003에서 안되는(VS 2010은 됨) 문제로 MyGUI를 R&D하고 있습니다. CMake 문법이 좀 복잡해 보이는데 문법이나 명령어를 모두 설명하려는게 아니고 역시나 제 특기?인 빌드하면서 나오는 이슈들을 정리해봅니다. 이번 포스팅부터는 그동안 강좌식 메인? 포스팅이 이슈들 때문에 너무 길고 잡다한 내용이 많아 지저분했던 걸 감안해서 이슈들을 먼저 따로따로 정리하고 링크정도를 걸면서 정리해나가는 식으로 하겠습니다.


1. MyGUI 설치
 MyGUI 홈페이지의 Download 탭을 통해 가시거나 직접 소스포지의 MyGUI에 있는 것을 다운로드 합니다. 현재 최신이 3.2.0 이네요. 그리고 적당한 곳에 압축을 해제합니다.


2. MyGUI Dependencies 설치

 MyGUI는 freetype과 ois lib와 의존성이 있습니다. 역시나 소스포지에 있는 MyGUI 의존성 파일을 다운받아 MyGUI 압축 해제한 곳 안에서 의존성 파일 압축을 해제합니다.

 MyGUI와 의존성 파일을 압축 해제했다면 위와 같이 생겼을 것입니다. 의존성 파일을 설치하지 않으면 나중에 빌드시 Could not locate FREETYPE 에러가 발생합니다. 자세한 의존성 파일 설치기는 에러 정리한 링크를 참고하세요.


3. MyGUI 빌드 도구인 CMake 설치

 MyGUI는 크로스플랫폼 빌드 도구인 CMake를 지원합니다. CMake를 가지고 각 IDE에 맞는 빌드 환경을 만들 수 있는거죠. 일단 윈도우에 CMake 설치하는 것을 정리했으니 참고하시기 바랍니다.


4. CMake로 MyGUI Visual Studio용 프로젝트 파일 빌드

 명령 프롬프트 즉, cmd를 관리자 모드로 실행합니다. 또는 각 비주얼 스튜디오 버전별 명령 프롬프트를 관리자 모드로 실행해도 됩니다. 관리자 모드로 실행하지 않으면 빌드시 The C compiler identification is unknown 이라는 컴파일러를 찾지 못하는 에러가 발생합니다.

 CMake를 그냥 실행해보면 여러가지 버젼의 개발 IDE를 지원하는 걸 볼 수 있습니다. 일단 전 2003용으로 시도를 먼저 해봤기에 이걸로 먼저 정리하겠지만 2003은 결론부터 말하면 빌드 실패했습니다. 비교적 최신의 비주얼 스튜디오용으로 빌드하시기 바랍니다.


cmake -DMYGUI_RENDERSYSTEM=1 -G "Visual Studio 7 .NET 2003"


 콘솔창에서 MyGUI 압축 해제한 곳으로 이동 후 위와 같이 입력후 실행해주면 프로젝트 파일이 생성됩니다. 실행에 앞서 관련 에러들을 설명하자면, -DMYGUI_RENDERSYSTEM=1 은 오우거3D와의 의존성을 뺀 순수 D3D9 버전 빌드를 위한 옵션입니다. 당연히 현재 오우거3D 엔진 베이스가 아니니까 이렇게 해주는데요, 디폴트로 빌드시 ERROR compiled OGRE DLL's wasn't found 에러가 발생할 수 있습니다. 렌더 시스템 옵션에 대한 자세한 설명은 링크를 참고하세요.

 이외에도 Could not locate DirectX 에러와 CEGUI에서도 발생했던 dxerr.lib 파일 관련 DirectX_DXERR9_LIBRARY 에러가 발생할 수 있으니 역시나 링크를 참고하세요.



c:\Users\wwforever.NOWCOM\Downloads\MyGUI_3.2.0>cmake -DMYGUI_RENDERSYSTEM=1 -G "Visual Studio 7 .NET 2003"
-- The C compiler identification is MSVC 13.10.3077
-- The CXX compiler identification is MSVC 13.10.3077
-- Check for working C compiler using: Visual Studio 7 .NET 2003
-- Check for working C compiler using: Visual Studio 7 .NET 2003 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 7 .NET 2003
-- Check for working CXX compiler using: Visual Studio 7 .NET 2003 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring MYGUI 3.2.0
-- Check if the system is big endian
-- Searching 16 bit integer
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - not found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of unsigned short
-- Check size of unsigned short - done
-- Using unsigned short
-- Check if the system is big endian - little endian
-- Looking for FREETYPE...
-- Could NOT find PkgConfig (missing:  PKG_CONFIG_EXECUTABLE)
-- CMAKE_PREFIX_PATH: Dependencies;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/Dependencies;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/Dependencies;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/../Dependencies;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/../Dependencies
-- Found FREETYPE: optimized;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/Dependencies/lib/release/freetype2311.lib;debug;C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3.2.0/Dependencies/lib/debug/freetype2311_D.lib
-- Looking for DirectX...
-- DirectX_PREFIX_PATH changed.
-- Found DirectX: D:/KabodStudio/SDK/DirectX_Oct2005/Lib/x86/d3d9.lib
-- Looking for DirectX11...
-- DirectX_PREFIX_PATH changed.
-- Could not locate DirectX11
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
--
-----------------------------------------------------------------------------
-- The following external packages were located on your system.
-- This installation will have the extra features provided by these packages.
+ freetype
+ DirectX
-----------------------------------------------------------------------------
-- The following OPTIONAL packages could NOT be located on your system.
-- Consider installing them to enable more features from this software.
+ Doxygen: Tool for building API documentation <http://doxygen.org>
-----------------------------------------------------------------------------

-- Unknown svn revision. It won't be included into build.
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/wwforever.NOWCOM/Downloads/MyGUI_3
.2.0


 위와 같이 마지막에 Configuring done, Generating done, Build files have been written to 로그가 있다면 빌드에 성공한 것입니다.


5. MyGUI 프로젝트 빌드

 CMake로 프로젝트 생성에 성공하면 MYGUI.sln 파일이 생성됩니다.

 솔루션 구성은 이렇습니다. 이제 빌드를 해보면,

 4640개의 에러가 발생합니다. 이것도 필터링 되서 줄은거죠. 아까 언급했듯이 2003에서는 이렇게 에러가 발생합니다.

 그래서 Visual C++ 2008 Express를 급 다운받아 설치 후 빌드해보니 잘 되는군요.


6. VS2003에서 MyGUI 빌드 에러 정리

MYGUI_OBSOLETE("use : operator += ")

  4000개가 넘는 에러가 오직 MYGUI_OBSOLETE 라는 디파인 때문에 생긴거더군요. 관련해서 추적해보니

#ifndef MYGUI_DONT_USE_OBSOLETE
...
#endif

 이런 디파인을 찾을 수 있었구요 CMakeLists.txt에 빌드 옵션이 있는데

option(MYGUI_DONT_USE_OBSOLETE "Remove obsole functions from build" FALSE)

 이런 옵션이 있더군요. 이걸 TRUE로 해주면 될 듯 싶어서 Clean 빌드하기위해 캐쉬 파일인 CMakeCache.txt를 지우고 다시 빌드해서 프로젝트를 빌드해봤지만,

 에러 갯수만 1438개로 줄어들 뿐 성공하지는 못 했습니다. CEGUI도 2010에서는 잘 되고 2003에서는 안 되더만 역시 비주얼 스튜디오 2003은 버려야하는게 맞는 듯 싶네요.


7. 그외 에러 링크
Does not match the generator used previously

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.