{{: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로 플래피버드 만들기]]를 읽어보자