개발환경(C++): Linux + CLion¶
이 챕터에서는 Linux 데스크탑에서 JetBrains 의 CLion 을 이용해 개발하는 방법을 설명합니다. 이 가이드는 CLion 2017.1.2 버전을 기준으로 작성되었습니다.
Tip
CLion 은 Microsoft Visual Studio 키맵도 지원합니다.
File
-> Settings
-> Keyamp
의 Keymaps
를
Visual Studio의 키맵으로 변경할 수 있습니다.
새 프로젝트 만들기¶
터미널 상에서 다음 명령을 입력하면 my_project 라는 새로운 project 가 생성됩니다.
$ funapi_initiator my_project
새로 만들어진 프로젝트는 끝에 ‘-source’ 가 붙은 디렉터리로 존재합니다. 예를 들어 위의 경우는 my_project-source 라는 이름이 됩니다. 게임 개발팀에서는 이 디렉터리를 SVN 저장소나 GIT 저장소에 넣고 공유할 수 있습니다.
CLion 솔루션 파일 만들기¶
다음을 입력합니다.
$ my_project-source/setup_build_environment --type=clion
이제 CLion 에서 새로 생성된 소스 디렉터리를 엽니다.
$ clion.sh ~/my_project-source
Note
clion.sh
경로는 CLion 을 어디에 설치했는지에 따라 달라질 수 있습니다.
CLion 에서 디버깅하기 위한 설정¶
프로젝트 동기화를 진행하기 위해 왼쪽 상단의
File
메뉴에 있는Realod CMake Project
를 클릭합니다. 동기화중에는 IDE 하단에Indexing ...
, 혹은Building Symbols ...
,Loading Symbols ...
등의 메시지가 표시됩니다. 이 작업은 사용 중인 머신 성능에 따라 수 초에서 수 분정도의 시간이 소요될 수 있습니다.
프로젝트 동기화가 끝나면 IDE 오른쪽 위에
Build All
이라고 표시된 드롭다운 목록이 생성됩니다. 이 메뉴를 써서 빌드 설정을 수정하거나 디버그/릴리즈 설정을 선택할 수 있습니다. 메뉴의 프로젝트 이름인my_project
가 디버그 빌드 설정이고,my_project (Release)
가 릴리즈 빌드 설정입니다.
프로그램이 정상적으로 실행되려면 프로그램 실행 인자와 라이브러리 경로(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_diskNote
여기서는 디버그 설정에 대해서만 다루겠습니다. 릴리즈 설정의 경우
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
메뉴의
Run
->Edit Configuration
으로 이동합니다. 이후 위에서 얻은 결과물을my_project
의Program arguments
항목에 아래와 같이 붙여넣습니다.
라이브러리 경로(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
오른쪽에 있는...
를 클릭한 후, 아래 그림과 같이 설정하면 됩니다.
모든 설정이 끝난 이후에는 CLion이 라이브러리를 인식할 수 있도록 아래 그림과 같이
External Libraries
를 오른쪽 클릭한 후Reload CMake Project
를 클릭합니다.
CLion 에서 디버깅하기¶
브레이크포인트를 지정하고 Debug 버튼을 누르면 디버깅이 가능합니다. 디버깅이 정상적으로 되지 않을 경우에는 라이브러리 경로(LD_LIBRARY_PATH)가 정상적으로 설정되었는지 확인해 주시기 바랍니다.
CLion 에서 게임 패키징하기¶
Build All
대신 Package
를 선택하시면 my_project-build/Debug
디렉토리 아래 여러분의 게임 서버를 패키지로 묶은 파일이 생성됩니다. 패키징에 대한 보다 자세한 내용은 서버 관리 Part 3: 서버 패키징 을 참고해주세요.
Tip
Package (Release)
를 선택하시면 릴리즈 빌드용 패키지가 my_project-build/RelWithDebInfo
아래 생성됩니다.