최상단 광고

2012년 4월 11일 수요일

루아 배포판 빌드하기


루아 배포판의 압축을 풀면 소스코드만 나온다.
알아서 사용환경에 맞게 빌드해 쓰라 이건데...
초보자(나같은-)는 도통 어떻게 요리해 먹어야 하는지 선뜻 감이 안온다.

물론 찾아보면 방법은 나와있다..

각 OS별, 컴파일러별 빌드방법에 대해 나와있다.

(Windows) Microsoft Visual Studio .Net 2003 ( version 7.1 ) Lua 5.x Solution

Briefly this includes a Visual Studio Solution and 3 projects. A project to build Lua 5.x as a static lib, a project to test that the lib is working, and a project to build luac. Here are the details of what this is[Read Me] here are the files [Visual Studio .Net 2003 ( version 7.1 ) Solution and Project files]

친절하게도 누군가 vc7에서 루아를 빌드하기 위한 솔루션 파일까지 만들어서 올려주셨다...;
이걸 받아서 압축을 풀고, 정식버전 중 현재 최후버전인 루아 5.0.2 배포판을 따로 압축을 푼다.

빌드용 솔루션 파일을 비주얼 스튜디오에서 열어 보면 프로젝트 3개가 준비되어 있는데,
각각 lua.lib를 빌드하기 위한 것, luac(루아컴파일러)를 빌드하기 위한 것, 나머지 하나는
테스트용 프로그램이다.

여기서 가장 중요한 건 lua.lib를 만드는 것이다... (내맘대로;)
자신이 작업하는 프로젝트에 루아 소스와 헤더를 몽땅 포함해서 작업할 수도 있을 것 같지만,
그다지 땡기는 방법은 아닌 듯.. 반면 lib 파일 하나면 프로젝트에 추가 종속성을 지정해서 dx처럼
외부 라이브러리로 사용할 수가 있다. 그리고 루아가 버전업 되더라도 그냥 lib만 새로 빌드해서
바꿔치기 하면 버전업도 간단하다~~

다시 본론으로 돌아가서, 프로젝트를 빌드하려고 보면 소스 파일이 하나도 없다.
배포판에 들어있는 소스를 여기 프로젝트에 옮겨 넣어야 한다.
간단하게 그냥 복사하자...

배포판을 풀어서 나온 서브폴더를 보면 여러가지 잡다하게 많지만, src와 include만 복사하면
된다. 빌드용 솔루션을 압축해제한 폴더에 있는 lua\src와 lua\include 폴더로 내용물을
복사한다.

이제야 lua.lib를 빌드할 수 있게 되었다.
빌드를 마치고나면 release라는 서브폴더에 lua.lib가 다소곳이 자리잡고 있다..

이것을 다른 프로젝트에서 사용하려면 dx를 처음 설치할 때와 같은 방법으로 하면 된다.
비주얼 스튜디오의 메뉴에서 도구-옵션을 선택, 나타나는 대화상자에서 Projects를 선택,
오른쪽 콤보박스에서 '포함 파일'과 '라이브러리 파일'을 눌러서 리스트에 빌드된 루아의 lib가
있는 폴더와 include폴더를 각각 추가해 주면 된다.. (으 너무 시시콜콜 쓰는 건가 -_-)

물론 자신의 프로젝트에서 사용하려면, 프로젝트 속성창에서 링커-입력-추가 종속성 항목을
찾아 lib를 추가시켜줘야하는 것도 dx 쓰는 방법과 마찬가지다..

새 프로젝트를 만들어 간단한 루아 예제를 찾아다가 붙여넣기하고 실행해보자..
위의 사항들을 실수없이 잘 했다면 아름답게 컴파일 되고 가슴뭉클한 루아와의 첫 연동을
감상할 수 있다...... 라고 말하고 싶지만, 아마 링크 에러가 날 것이다. (킁..)

몇몇 c 기본 라이브러리의 함수명이 나열되면서 '이미 정의된 기호'라는 LNK2005 에러가 날텐데,
방금 사용한 빌드 도우미와 현재 프로젝트의 런타임 라이브러리가 다르게 설정되어 있어서
그런 것이다...

빌드용 솔루션의 프로젝트 설정을 살펴보면 런타임 라이브러리가 다중스레드로 되어 있는데,
이녀석을 자신이 사용할 프로젝트의 그것과 같게 만들어야 한다. (보통 단일 스레드이겠지만..)

그리고 다중이냐 단일이냐 외에도 디버그냐 릴리즈냐가 차이나는데, 덕분에 lib를 최소한
디버그용과 릴리즈 빌드용 두가지를 만들어야 한다..

런타임 라이브러리의 설정은 프로젝트 속성창에서 C/C++ - 코드 생성 항목을 보면 있다.
한번은 그냥 '단일 스레드'로 선택하여 릴리즈용 lib를 빌드, 한번은 '단일 스레드 디버그'로
선택하여 디버그용 lib를 빌드하자..

각각 lua_d.lib, lua_r.lib 이든 뭐든 맘에 드는 이름으로 바꾸어서 잘 모셔두고 실제 작업할
프로젝트에 추가할 때는 디버그와 릴리즈 모드에 맞게 추가 종속성을 설정하면 된다..
일단 다중 스레드용이냐 단일 스레드용이냐만 맞으면 warning하나 뜨고 컴파일이 되긴 된다.
그렇지만 뭐 잘 모르는 입장에서 warning이라는 건 그냥 무시하기엔 두려운 존재이므로 (-_-)
디버그, 릴리즈 구분해서 맞추어 링크를 하자....

-----------------------------------
루아를 직접 건드려본 건 오늘이 처음, lib를 빌드해 본 것도 오늘이 처음...
그러니 틀린 부분이 있을 수 있음을 밝힙니다. 온통 들쑤시고 다녀봐도 루아 배포판 빌드하기
따위(;)는 모두들 어려운 일도 아니라고 생각하는 건지... 관련 문서 찾기가 힘들더군요. 
저로서는 영 어려웠던 일이라 참고용으로 썼습니다...
분명 어딘가 제대로 알지 못하고 몇군데인가 잘못된 내용을 썼을거 같지만............... ㅎㅎㅎ

댓글 없음: