Mac + Irrlicht + Eclipse CDT(이클립스로 맥에서 일리히트엔진 사용하기)

|
맥에서 주로 사용하는 엑스 코드는 자체적으로 따로 컴파일러를 가지고있는것이 아니라 내부적으로 gcc를 호출하여주면 통합 개발환경입니다. 
여기서 한가지 많이 분들이 착각하시는것이 gcc입니다.
원래는 Gnu C Compiler의 약자였다고합니다.
그것이 Gnu Compiler Collection 으로 되어서 여러가지 언어를 통합적으로 컴파일할수있는 툴이되었습니다.
실제로 오브잭트씨로 따로 컴파일러가 있는것이아니라 gcc에서 모두 통합되어 컴파일이됩니다.
그리고 이들 서로 다른 언어들은 오브잭트코드상에서 모두 호환이 됩니다. 

그래서 오브잭트씨로 클래스나 함수를 만든것을 씨나 씨뿔뿔에서 호출하여 쓸수있는것입니다. 

먼저 맥에서 컴파일러를 세팅해줘야하는데요
엑스코드를 설치만 해주면됩니다.
맥에서는 따로 gcc설치하실필요가없고 엑스코드를 설치했다면 따로 손댈게 없습니다. 되도록 최신버전의 엑스코드를 설치하실필요가있습니다. 

커멘드창을 열고 'gcc --help' 해서 다음과같이 나온다면 준비가 된 상태입니다.



그다음 이클립스를 설치합니다.
단순히 압축만 풀면 설치가 됩니다.
http://www.eclipse.org/downloads/ 
c++용 이클립스를 다운받아서 쓰시면됩니다.(eclipse CDT)

그리고 엑스코드상에서 일리히트엔진을 컴파일합니다.
커멘드창에서 make staticlib_osx 으로 컴파일성공해서 libirrlicht.a 파일이 생성은 되지만, 일리히트엔진 소스 폴더에있는 make파일은 맥용설정이 제데로안되있어서 오브잭트씨소스를 컴파일하지않고 무시해버립니다. 그부분은 나중에 시간이되면 내용을 수정해볼려고합니다.


일리히트엔진은 다행이도 소스폴더에 맥의 엑스코드용 프로잭트 파일이 포함되어있습니다.


MacOSX.xcodeproj 를 더블 클릭합니다.

 
active architecture를 x86_64로 세팅해놓습니다. 만약 이항목이 보이지 않으면 Get info 메뉴에서 다음과 같이  64-bit Intel 로 설정해놓습니다

 

64비트버전의 컴파일이므로 OpenglMatrialRenderer.cpp 파일에서 void * 형을 Gluint바꿀수없다는 에러가 나올겁니다.
모두 size_t 로 수정하여 컴파일해주면 이상없이 잘됩니다.(2011년4월10일 현재, 1.7.2 버전에서 확인)

빌드가 무시하 마치고나면 build/debug/libirrlicht.a가 생성됩니다.



여기서 얻어진 라이브러리파일(libirrlicht.a)을 가지고 이클립스에서 사용 하실수있습니다.

이클립스도 프로잭트설정에서 -framework 옵션을 사용할수있습니다.(당연한 말이지만 그옵션은 엑스코드전용옵션이 아니라 MacOSX c++ linker(ld) 옵션입니다.)
링크과정에서 코코아 프레임웍 오픈지엘 프래임웍등이 필요합니다.

이큼립스를 실행시키고 핼로월드 프로잭트를 만듭니다.


main.cpp파일을 다음과 같이 바꾼다.

//============================================================================

// Name        : test1.cpp

// Author      : 

// Version     :

// Copyright   : Your copyright notice

// Description : Hello World in C++, Ansi-style

//============================================================================

//기본 A1형

#include <irrlicht.h>

//#include <windows.h>

int main() {

irr::IrrlichtDevice *pDevice =irr::createDevice(irr::video::EDT_OPENGL);

//irr::IrrlichtDevice *pDevice;

pDevice->setWindowCaption(L"Type-A1");


irr::video::IVideoDriver *pVideo = pDevice->getVideoDriver();

irr::scene::ISceneManager *pSmgr = pDevice->getSceneManager();

irr::gui::IGUIEnvironment *pGuiEnv = pDevice->getGUIEnvironment();

pDevice->getFileSystem()->changeWorkingDirectoryTo("../../res");

pSmgr->addCameraSceneNode(0, irr::core::vector3df(0, 10, -20),

irr::core::vector3df(0, 0, 0));

//큐브 노드 만들기

{

irr::scene::ISceneNode *pNode = pSmgr->addCubeSceneNode();

pNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);

pNode->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

}


//프레임 레이트 표시용 유아이

irr::gui::IGUIStaticText *pstextFPS = pGuiEnv->addStaticText(L"Frame rate",

irr::core::rect<irr::s32>(0, 0, 100, 20), true, true, 0, 100, true);

while (pDevice->run()) {

static irr::u32 uLastTick = 0;

irr::u32 uTick = pDevice->getTimer()->getTime();

irr::f32 fDelta = ((float) (uTick - uLastTick)) / 1000.f; //델타값 구하기

uLastTick = uTick;

//프레임레이트 갱신, 삼각형수 표시

// {

// wchar_t wszbuf[256];

// swprintf(wszbuf, L"Frame rate : %d\n TriAngle: %d",

// pVideo->getFPS(), pVideo->getPrimitiveCountDrawn());

// pstextFPS->setText(wszbuf);

// }

pVideo->beginScene(true, true, irr::video::SColor(255, 100, 101, 140));

pSmgr->drawAll();

pGuiEnv->drawAll();

pVideo->endScene();

}

pDevice->drop();

return 0;




그 다음 헤더파일경로를 추가해준다.
Gcc c++ Compier -> Includes


이번에는 라이브러리를 추가해준다.

MacOSX c++ linker / Libraries



마지막으로 프레임웍 옵션을 추가해줍니다.

MacOSX c++ linker -> Miscellaneous -> Linker flags 텍스트 박스에  

-framework GLUT -framework OpenGL -framework Cocoa -framework IOKit -framework Carbon

을 타이핑 해넣어줍니다.



참고로 엑스 코드상에서 다음과 같은 내용입니다.

XXX.framework 형태로 되어있는것이

이클립스상에서는 링커옵션을 직접 넣어주므로
-framework XXX
이런식으로 써주면됩니다.

framework이란 헤더와 립파일을 묶어 놓은 개념입니다.
참고로 리눅스나 윈도에서는 링커에서 framework옵션이 존재하지않습니다.




시스템/라이브러리/frameworks/  에 모아져 있습니다.
헤더파일과 라이브러리 파일이 모아진 폴더형태입니다.



컴파일이 무사히 마쳤으면 실행을 해야합니다.


그냥 바로 실행을 하면 화면상에 아무것도 나오지 않을것입니다.

Run Confiurations-> Environment 에서

new 를 해서 항목을 생성하고 
DISPLAY 0.0 이라고 설정한후 실행하면됩니다.


 
 

실행화면입니다.

ps.

참고로 맥에서 컨트롤+스페이스는 다른키로 예약이 되어있기때문에 이클립스의 자동완성 기능을 쓰실려면 아래와 같이 수정을 해줍니다.

Ecilpse->환경설정


옵션+스페이스 키로 바꾼예입니다.


-참고자료-  

http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=25355&sid=96f55fb1f9fc9649cb6270b2e2420404

이클립스로 윈도에서 일리히트 엔진사용하기
http://gamedevfan.blogspot.com/2009/10/irrlicht-engine-easy-tutorial-intro.html

윈도에서 이클립스로 아이폰어플개발하기
http://rosagigantea.tistory.com/354

동영상

http://www.youtube.com/watch?v=pA75ltC1LVU

리눅스에서 사용하기...

http://www.sensobots.de/Documentation/TUTORIAL_irrlicht_eclipse_cdt/irrlicht-cdt-linux.html

http://www.irrlicht3d.org/wiki/index.php?n=Main.UsingEclipseWithIrrlicht

맥에서 이클립스로 오픈지엘사용하기
http://dirkraffel.com/2008/01/17/eclipse-cdt-on-mac-os-x/
http://jaeyoung.tistory.com/234


맥에서 이클립스로 쿠다쓰기
http://eaglface.blogspot.com/2009/04/mac-os-xeclipse-cdt-cuda.html

Max OsX용  일리히트 프레임웍 만들기 관련 포스트
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=42601 





And