{{:raylib:raylibvscode.png?600|C++ Raylib VSCode}} ===== 필요성 ===== raylib가 설치된 디렉토리에는 vs code용 project 폴더가 제공되어 있긴 하다. 물론 다른 에디터용 project폴더도 같이 제공된다. c:/raylib/raylib/project/VSCODE 그런데 이 폴더는 순수 c를 위한 템플릿이다. c++을 위해서는 간단한 조작이 필요하다. ===== raylib 설치 및 환경변수 등록 ===== ==== raylib 설치 ==== [[https://www.raylib.com/|raylib공식 웹사이트]]에서 raylib 최신버전을 다운 받아 설치한다. 2023년 3월 21일 기준으로는 4.5 버전이 최신이다. ==== 환경 변수 등록 ==== 윈도우 검색창에서 [고급 시스템 설정 보기]를 찾은 후에 [시스템 속성]에서 [환경 변수]를 클릭한다. user의 사용자 변수 중에 "Path"값을 클릭한 후 맨 마지막에 새로만들기로 컴파일러가 있는 변수를 설정해 준다. raylib 4.5 기준으로 g++ 컴파일러가 있는 디렉토리는 c:/raylib/w64devkit/bin 이다. 환경변수 설정은 [[https://yermi.tistory.com/entry/%EA%BF%80%ED%8C%81-Windows-10%EC%97%90%EC%84%9C-%ED%99%98%EA%B2%BD-%EB%B3%80%EC%88%98-%EA%B2%BD%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-%EC%9C%88%EB%8F%84%EC%9A%B0%EC%A6%88-%ED%99%98%EA%B2%BD-%EB%B3%80%EC%88%98-Path-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0 |이 블로그 ]]를 참조하자 이렇게 환경변수를 설정하는 이유는 컴파일러 명령어(g++.exe)를 어떤 path에서든 불러오기 위함이다. VS CODE용 raylib 템플릿에는 컴파일 배치명령어인 makefile이 들어있다. 이 makefile에는 전체 경로를 적지 않고 단순하게 "gcc.exe" 혹은 "g++.exe"로만 되어 있다. 컴파일러 명령어인 g++.exe는 어떤 디렉토리에서든 불러오는 것이 좋으므로 이렇게 환경변수를 설정하는 것이 좋다. ===== 템플릿 설치 및 수정 ===== ==== 템플릿 설치 ==== raylib의 기본 설치 폴더에서 제공하는 VS CODE용 projects 템플릿은 순수 c를 위한 설정파일만 있다고 전술하였다. 따라서 이 템플릿에는 컴파일러를 gcc.exe로 되어 있으므로 이러한 설정들을 바꾸어야 한다. [[https://github.com/JSeneque/raylib-vscode-template|Jean-Noel Seneque]] 란 사람은 c++을 위한 vs code 템플릿을 2021년에 만들어서 배포하기도 하였다. 그런데 이 역시 raylib가 4.5버전으로 된 현재는 완벽하지 않다. 왜냐하면 .vscode에 있는 설정 파일들에서 compiler path가 과거의 경로로 되어 있기 때문이다. 과거에는 "c:/raylib/mingw/bin/g++.exe" 였지만 지금은 "c:/raylib/w64devkit/bin/g++.exe" 이다. 이렇게 컴파일러와 디버거의 경로를 현재에 맞게 설정해주어야 한다. [[https://jeannoelseneque.medium.com/game-development-with-raylib-c-16790c4b4f4b|Jean-Noel Seneque]]가 만든 템플릿파일을 최신의 raylib에 맞게 고친 것을 아래에 첨부한다. 앞으로는 이 파일을 기초로 하여 코딩을 하면 VS CODE에서도 쉽게 컴파일을 할 수 있다. 앞으로 OOP 형태로 코딩을 할 것이므로 OOP형태의 최소한으로 템플릿 파일을 만들었다. {{ :raylib:raylibtemplate.zip |Raylib Template File}} ==== Makefile ==== 위 템플릿을 기존 Raylib 에 있던 c를 위한 컴파일 설정을 c++ 로 컴파일을 하게 바꾼 것이다. 따라서 그 원리를 이해하면 좋을 것이다. Makefile은 다음과 같이 c++에 대한 컴파일러인 g++.exe로 바뀌고 그에 따라 설정도 바뀌었다. 솔직히 첨부된 Makefile에서 웹이나 기타 리눅스, OSX(맥)에 대한 것들은 지원도 상관 없다. 물론 본인이 리눅스 등 해당 플랫폼을 쓴다면 윈도우에 대한 설정도 지워도 상관 없다. 향후에는 간략화된 Makefile을 첨부해 보도록 하겠다. === 가. C 버전의 Makefile === 기존 C버전의 Makefile은 다음과 같다. 이게 가장 핵심 명령어이다. # Define default C compiler: gcc # NOTE: define g++ compiler if using C++ CC = gcc # Define default make program: Mingw32-make MAKE = mingw32-make # Define compiler flags: # -O0 defines optimization level (no optimization, better for debugging) # -O1 defines optimization level # -g include debug information on compilation # -s strip unnecessary data from build -> do not use in debug builds # -Wall turns on most, but not all, compiler warnings # -std=c99 defines C language mode (standard C from 1999 revision) # -std=gnu99 defines C language mode (GNU C from 1999 revision) # -Wno-missing-braces ignore invalid warning (GCC bug 53119) # -D_DEFAULT_SOURCE use with -std=c99 on Linux and PLATFORM_WEB, required for timespec # -ftime-report Print Compiling Elapsed time CFLAGS += -Wall -std=c99 -D_DEFAULT_SOURCE -Wno-missing-braces ifeq ($(BUILD_MODE),DEBUG) CFLAGS += -g -O0 else CFLAGS += -s -O1 endif CFLAGS += $(RAYLIB_PATH)/src/raylib.rc.data # ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) # CFLAGS += $(ROOT_DIR)/Assets/DKIcon.png # Define include paths for required headers # NOTE: Several external required libraries (stb and others) INCLUDE_PATHS = -I. -I$(RAYLIB_PATH)/src -I$(RAYLIB_PATH)/src/external ifneq ($(wildcard /opt/homebrew/include/.*),) INCLUDE_PATHS += -I/opt/homebrew/include endif === 나. C++ 버전의 Makefile === 컴파일러와 플래그만 C++에 맞게 바꿔주면 된다. 즉 다음 부분만 바꿔 주면 된다. # Define default C compiler: gcc # NOTE: define g++ compiler if using C++ CC = g++ CFLAGS += -Wall -std=c++14 -D_DEFAULT_SOURCE -Wno-missing-braces ==== tasks.json ==== .vscode 하위 폴더에는 tasks.json 파일이 있다. 여기에는 컴파일러가 만드는 어셈블러파일, 즉 objs가 뭘 근거로 할지를 설정해 줄 수 있다. c 프로젝트에서는 "*.c"이다. 이를 "*.cpp"로 바꿔주면 된다. 다음과 같이 말이다. "windows": { "command": "C:/raylib/w64devkit/bin/mingw32-make.exe", "args": [ "RAYLIB_PATH=C:/raylib/raylib", "PROJECT_NAME=${fileBasenameNoExtension}", "OBJS=*.cpp", "B ==== 템플릿 파일들 ==== 기존 템플릿 파일을 참조하는게 가장 손쉽긴 하다. c 버전은 [[https://github.com/DongkunLee/raylibbmfontextender|한글폰트 사용 라이브러리]]를 이용하면 되고, c++ 버전은 내가 만들어 둔 강좌 중 아무 프로젝트나 가져와서 지우고 새롭게 만들면 된다. [[raylib:flappybird:다국어_지원하기|다국어 지원하기]]가 가장 최근 프로젝트이다. ===== 더보기 ===== 이제 실제로 게임을 만들어보자 [[raylib:pong게임|Raylib로 Pong게임 만들기]]와 [[raylib:flappybird:flappy_bird_만들기|C++와 Raylib로 플래피버드 만들기]]를 읽어보자