필요성
raylib가 설치된 디렉토리에는 vs code용 project 폴더가 제공되어 있긴 하다. 물론 다른 에디터용 project폴더도 같이 제공된다.
c:/raylib/raylib/project/VSCODE
그런데 이 폴더는 순수 c를 위한 템플릿이다. c++을 위해서는 간단한 조작이 필요하다.
raylib 설치 및 환경변수 등록
raylib 설치
raylib공식 웹사이트에서 raylib 최신버전을 다운 받아 설치한다. 2023년 3월 21일 기준으로는 4.5 버전이 최신이다.
환경 변수 등록
윈도우 검색창에서 [고급 시스템 설정 보기]를 찾은 후에 [시스템 속성]에서 [환경 변수]를 클릭한다.
user의 사용자 변수 중에 “Path”값을 클릭한 후 맨 마지막에 새로만들기로 컴파일러가 있는 변수를 설정해 준다.
raylib 4.5 기준으로 g++ 컴파일러가 있는 디렉토리는
c:/raylib/w64devkit/bin
이다. 환경변수 설정은 이 블로그 를 참조하자
이렇게 환경변수를 설정하는 이유는 컴파일러 명령어(g++.exe)를 어떤 path에서든 불러오기 위함이다.
VS CODE용 raylib 템플릿에는 컴파일 배치명령어인 makefile이 들어있다. 이 makefile에는 전체 경로를 적지 않고 단순하게 “gcc.exe” 혹은 “g++.exe”로만 되어 있다. 컴파일러 명령어인 g++.exe는 어떤 디렉토리에서든 불러오는 것이 좋으므로 이렇게 환경변수를 설정하는 것이 좋다.
템플릿 설치 및 수정
템플릿 설치
raylib의 기본 설치 폴더에서 제공하는 VS CODE용 projects 템플릿은 순수 c를 위한 설정파일만 있다고 전술하였다.
따라서 이 템플릿에는 컴파일러를 gcc.exe로 되어 있으므로 이러한 설정들을 바꾸어야 한다.
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” 이다.
이렇게 컴파일러와 디버거의 경로를 현재에 맞게 설정해주어야 한다.
Jean-Noel Seneque가 만든 템플릿파일을 최신의 raylib에 맞게 고친 것을 아래에 첨부한다.
앞으로는 이 파일을 기초로 하여 코딩을 하면 VS CODE에서도 쉽게 컴파일을 할 수 있다.
앞으로 OOP 형태로 코딩을 할 것이므로 OOP형태의 최소한으로 템플릿 파일을 만들었다.
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 버전은 한글폰트 사용 라이브러리를 이용하면 되고,
c++ 버전은 내가 만들어 둔 강좌 중 아무 프로젝트나 가져와서 지우고 새롭게 만들면 된다.
다국어 지원하기가 가장 최근 프로젝트이다.
로그인