Cork는 리눅스, 맥, 윈도우 다양한 플랫폼을 지원한다.
다만 리눅스와 맥은 GMP 라이브러리를 사용하여 설치하지만, 윈도우의 경우에는 MPIR이라는 라이브러리를 사용한다.
둘다 기능과 사용법은 똑같은데 GMP를 윈도우에서 사용하기 어려워서 MPIR을 사용한다.
Cork를 빌드하기 위해서는 MPIR 라이브러리가 필요하므로 아래의 글을 읽고 설정을 하고 다시 돌아오자.
이제 본격적으로 cork를 빌드해보자.
먼저 https://github.com/gilbo/cork
코드는 위 주소에서 받을 수 있다. 해당주소 들어가서 Download ZIP 클릭한 후 압축을 풀자.
안에 보면 win/wincork 폴더가 있다. 프로젝트를 열어서 컴파일을 해보자.
다른 분들을 어떨지 모르겠으나 필자는 매우 많은 컴파일 오류가 났다. 이유는 헤더파일의 경로 때문이다.
다른 버전에서는 모르겠으나 visual studio 2013과 2015 에서는 모두 같은 문제가 있었다.
계속 컴파일 해가면서 경로 수정을 해주면서 컴파일에 성공했으나, 이 방법은 시간을 소모한다. 몇 개 안되는줄 알고 일일이 수정했다.
예를 들어 #include "vec.h"에서 오류가 생긴다면, 상대위치를 파악하여 #include "..\math\vec.h" 로 수정하는 식이다.
대략 20개? 정도 수정한 것 같다.
굳이 모양(?)을 신경쓰지 않는다면 아래의 방법을 추천한다.
모양새가 이쁘진 않지만 src 폴더안에 있는 하위 폴더들 (accel, math 등)에 있는 파일들을 모두 src 폴더 안에 넣는것이다.
이러면 include할 때 경로 문제가 발생하지 않을 것이다.
빌드를 하게 되면 디버그 폴더 안에 wincork.exe 라는 파일이 생성된다.
비주얼 스튜디오에서 start without debugging 으로 시작하게 되면 옵션이 없어서 프로그램이 바로 종료되므로 cmd에서 열도록 한다.
wincork.exe가 있는 폴더에 가서 폴더 주소창에 cmd 라고 입력하면 바로 현재 폴더로 명령프롬프트에 들어가진다.
wincork.exe -help 라고 입력하면 아래와 같은 설명을 볼 수 있다.
cork에서 기본으로 제공하는 example 파일을 통해 union 연산을 활용해 보자.
example 폴더는 cork 폴더 바로 아래에 있다. 이 안에는 ballA.off 파일과 ballB.off 파일이 있는데 같은 크기의 공 파일이다.
참고로 .off 확장자 파일을 열고 싶다면 아래의 글을 참고하자.
2016/05/12 - [CS/환경설정] - *.off, off 확장자 파일 열기(How to open .off extension file)
cork로 union 연산을 하려면 wincork.exe -union input_file1 input_file2 output_file 처럼 입력하면 된다.
아래는 필자가 입력한 명령어 이다.
wincork.exe -union ..\...\samples\ballA.off ..\..\..\samples\ballB.off out.off
연산을 수행하면 아래와 같이 union 연산이 잘 수행 된 것을 볼 수 있다.