3. 개발환경(C++): Linux + CLion

이 챕터에서는 Linux 데스크탑에서 JetBrains 의 CLion 을 이용해 개발하는 방법을 설명합니다. 이 가이드는 CLion 2017.1.2 버전을 기준으로 작성되었습니다.

Tip

CLion 은 Microsoft Visual Studio 키맵도 지원합니다. File -> Settings -> KeyampKeymaps 를 Visual Studio의 키맵으로 변경할 수 있습니다.

3.1. 새 프로젝트 만들기

터미널 상에서 다음 명령을 입력하면 my_project 라는 새로운 project 가 생성됩니다.

$ funapi_initiator my_project

새로 만들어진 프로젝트는 끝에 ‘-source’ 가 붙은 디렉터리로 존재합니다. 예를 들어 위의 경우는 my_project-source 라는 이름이 됩니다. 게임 개발팀에서는 이 디렉터리를 SVN 저장소나 GIT 저장소에 넣고 공유할 수 있습니다.

3.2. CLion 솔루션 파일 만들기

다음을 입력합니다.

$ my_project-source/setup_build_environment --type=clion

이제 CLion 에서 새로 생성된 소스 디렉터리를 엽니다.

$ clion.sh ~/my_project-source

Note

clion.sh 경로는 CLion 을 어디에 설치했는지에 따라 달라질 수 있습니다.

3.3. CLion 에서 디버깅하기 위한 설정

  1. 프로젝트 동기화를 진행하기 위해 왼쪽 상단의 File 메뉴에 있는 Realod CMake Project 를 클릭합니다. 동기화중에는 IDE 하단에 Indexing ..., 혹은 Building Symbols ..., Loading Symbols ... 등의 메시지가 표시됩니다. 이 작업은 사용 중인 머신 성능에 따라 수 초에서 수 분정도의 시간이 소요될 수 있습니다.
_images/clion-1.png
  1. 프로젝트 동기화가 끝나면 IDE 오른쪽 위에 Build All 이라고 표시된 드롭다운 목록이 생성됩니다. 이 메뉴를 써서 빌드 설정을 수정하거나 디버그/릴리즈 설정을 선택할 수 있습니다. 메뉴의 프로젝트 이름인 my_project 가 디버그 빌드 설정이고, my_project (Release) 가 릴리즈 빌드 설정입니다.
_images/clion-2.png
  1. 프로그램이 정상적으로 실행되려면 프로그램 실행 인자와 라이브러리 경로(LD_LIBRARY_PATH) 설정이 필요합니다. 먼저 CLion에서 Build All 을 선택한 후 왼쪽의 빌드 버튼을 눌러 프로그램을 빌드합니다. 이제 터미널을 통해 빌드 결과물이 있는 my_project-build/Debug 디렉토리에서 다음과 같이 실행합니다. 실행 결과물로 출력된 프로그램 실행 인자는 프로젝트 위치에 따라 바뀔 수 있습니다.
$ ./my_project-build/Debug/my_project-local --args
--main_program_name=my_project_server.default --app_flavor=default --framework_manifest_path=/usr/share/funapi/manifests:/home/ubuntu/my_project-build/Debug/manifests/default --framework_manifest_override_file=/etc/my_project/MANIFEST.override.json --main_enabled_components=my_projectServer --resource_root=/home/ubuntu/my_project-build/Debug/resources --log_root_dir=/home/ubuntu/my_project-build/Debug/logs --crashdump_root_dir=/home/ubuntu/my_project-build/Debug/dumps --max_log_size=10 --alsologtostderr --stop_logging_if_full_disk

Note

여기서는 디버그 설정에 대해서만 다루겠습니다. 릴리즈 설정의 경우 my_project-build/Debug 대신 my_project-build/RelWithDebInfo 로 바꿔 입력하시면 됩니다.

Note

유사하게 만약 Flavor: 역할에 따라 서버 구분하기 를 사용하는 경우, flavor 에 해당하는 local 스크립트에 --args 인자를 입력하고 실행하면 됩니다. 만약 game 이라는 flavor 가 있다면 다음처럼 하시면 됩니다.

$ ./my_project-build/Debug/my_project.game-local --args
--main_program_name=my_project_server.game --app_flavor=game --framework_manifest_path=/usr/share/funapi/manifests:/home/ubuntu/my_project-build/Debug/manifests/game --framework_manifest_override_file=/etc/my_project/MANIFEST.game.override.json --main_enabled_components=MyProjectServer --resource_root=/home/ubuntu/my_project-build/Debug/resources --log_root_dir=/home/ubuntu/my_project-build/Debug/logs --crashdump_root_dir=/home/ubuntu/my_project-build/Debug/dumps --max_log_size=10 --alsologtostderr --stop_logging_if_full_disk
  1. 메뉴의 Run -> Edit Configuration 으로 이동합니다. 이후 위에서 얻은 결과물을 my_projectProgram arguments 항목에 아래와 같이 붙여넣습니다.
_images/clion-3.png
  1. 라이브러리 경로(LD_LIBRARY_PATH)는 아래와 같은 형태여야 합니다. 마찬가지로 프로젝트 위치에 따라 경로가 바뀔 수 있습니다.
LD_LIBRARY_PATH=/home/ubuntu/my_project-build/Debug/src:/usr/lib:/usr/local/lib:/usr/lib/mariadb:/usr/lib64/mariadbs

이제 Environment variables 오른쪽에 있는 ... 를 클릭한 후, 아래 그림과 같이 설정하면 됩니다.

_images/clion-4.png
  1. 모든 설정이 끝난 이후에는 CLion이 라이브러리를 인식할 수 있도록 아래 그림과 같이 External Libraries 를 오른쪽 클릭한 후 Reload CMake Project 를 클릭합니다.
_images/clion-5.png

3.4. CLion 에서 디버깅하기

브레이크포인트를 지정하고 Debug 버튼을 누르면 디버깅이 가능합니다. 디버깅이 정상적으로 되지 않을 경우에는 라이브러리 경로(LD_LIBRARY_PATH)가 정상적으로 설정되었는지 확인해 주시기 바랍니다.

_images/clion-6.png

3.5. CLion 에서 게임 패키징하기

Build All 대신 Package 를 선택하시면 my_project-build/Debug 디렉토리 아래 여러분의 게임 서버를 패키지로 묶은 파일이 생성됩니다. 패키징에 대한 보다 자세한 내용은 서버 관리 Part 3: 서버 패키징 을 참고해주세요.

_images/clion-2.png

Tip

Package (Release) 를 선택하시면 릴리즈 빌드용 패키지가 my_project-build/RelWithDebInfo 아래 생성됩니다.