[ OpenGL / CMake ] 개발환경 구성하기(1)

범볼·2023년 4월 8일
1

OpenGL / CMake Course

목록 보기
1/1
post-thumbnail

Rinthel Kwon님의 OpenGL Course 영상을 보고 공부한 내용입니다.

강의 목표

1. 크로스 플랫폼 개발환경 구축하기 => 현재

2. CMake dependency 관리


목차

  • Vscode란?
  • CMake란?
  • 프로젝트 구성하기
  • Version Control System / Source Control
  • 프로젝트에 Git 연결하기


🥇 Vscode란?

Microsoft가 만든 다기능 텍스트 에디터

  • 에디터 자체가 가볍고 크로스 플랫폼

  • 수많은 확장 프로그램

  • Window의 경우에는 Visual Studio 2019 Community Edition을 설치하여 사용
    하드디스크의 용량이 적을 시에는 Build Tools for Visual Studio 2019만 설치해도됨
    Windows 콘솔창에서 명령어 ‘code’로 vscode 열 수 있음

  • macOS의 경우에는 Xcode, Linux의 경우에는 GCC를 사용하면 됨
    macOS, Linux에서는 설치 및 실행 후 ctrl - shift - P 눌러서 커맨드 팔렛을 연 후
    shell로 검색하여 콘솔창에서 vscode를 활성화하는 것이 가능함

💻 화면 구성

Sidebar (화면 좌측) : 파일 탐색 / 검색 / 소스 컨트롤 / 디버그 / 익스텐션

Editor (화면 우측) :문서 에디팅 화면

화면 하단 : 터미널 / 에러 / 출력 화면 등

💻 주요 기능

  • 파일 이동 ➡ ctrl + p

  • 커멘드 팔렛 ➡ ctrl + shift + p
    Change Language Mode ⇒ 언어 하이라이트 선택
    Indent Using Space, [1~...] ⇒ tab 키 눌렀을때 칸 갯수 조절
    View Reset Zoom ⇒ 화면 크기 원점으로

  • 같은 단어들 선택하기 ➡ ctrl + d

  • 화면 확대 / 축소 ➡ ctrl + (+/-)


🥇 CMake란?

여러 운영체제(window, mac, linux 등)에 맞는 build process를 작성한 것
CMakeLists.txt의 내용을 바탕으로 각 환경에 맞는 빌드파일을 생성해주는 프로그램

💻 CMake 설치

CMake Download

설치 시 언제 어디서든 이용할 수 있도록 시스템 경로(system PATH) 추가함
macOS의 경우에는 brew, Linux의 경우에는 apt-get 이용

💻 CMake의 작동 방식

Meta-project description : 각 플랫폼에서 선호하는 빌드 방식에 맞는 프로젝트 파일을 생성

  • Window ⇒ visual studio project
  • Linux ⇒ Makefile
  • macOS ⇒ XCode / Makefile
  • Android ⇒ Ninja build


🥇 프로젝트 구성하기

cmd 창으로 사용할 디렉토리를 연 후 명령어 ‘code .’을 통해 Vscode 실행
Vscode Extension 설치 ⇒ C/C++, C++Intellisense, CMake, CMake Tools

1. src/main.cpp 파일 작성
간단하게 "hello world"를 출력하여 테스트함

#include <iostream>

int main(int argc, const char** argv) {
 std::cout << "hello, world" << std::endl;
 return 0;
}

2. CMakeLists.txt 파일 작성

 cmake_minimum_required(3.14)
 // 관리하는 cmake 버전이 3.14 이하여야함
 
 // set : 변수 세팅
 set(PROJECT_NAME cmake_project_example) 
 set(CMAKE_CXX_STANDARD 17)
 // cmake로 시작하는 변수들은 전역 변수
 // cxx = c++, c++ standard는 11 14 17 버전이 존재
 // 변수 사용할때는 ${변수} 형식으로 사용함
 
 project(${PROJECT_NAME}) // ${PROJECT_NAME}라는 이름의 프로젝트를 세팅
 add_executable(${PROJECT_NAME} src/main.cpp)
 // main.cpp 소스파일을 컴파일하여 ${PROJECT_NAME} 이름의 실행파일을 만듬

💻 CMake 프로젝트 시작하기(1)

  • configure : 빌드하기 전에 각각의 프로젝트 파일 형태로 구체화하는 단계
    터미널에 cmake -B(생성할 디렉토리 이름) . -DCMAKE_BUILD_TYPE=Debug 작성하여 실행
    ⇒ sln(비주얼 스튜디오 솔루션 파일), vcxproj(비주얼 스튜디오 파일) 파일 등등 생성됨
  • build : 실제로 빌드하여 내부적으로 실행함
    터미널에 cmake — build (생성한 디렉토리 이름)
    ⇒ exe 파일이 Debug 폴더에 생성됨

터미널에 .\build\Debug\cmake_project_example.exe 작성하여 실행할 수 있음

💻 CMake 프로젝트 시작하기(2)

Vscode의 익스텐션 기능을 통해 CMake 커맨드를 실행시켜 줄 수 있음

  • 커맨드 팔렛에서 cmake로 검색하여 원하는 기능 실행

  • Build 단축키 = F7
    Debug 단축키 = ctrl + F5
  • 화면 최하단 상태 바의 메뉴로 원하는 기능 실행

  • 화면 좌측에 추가로 생긴 cmake 탭에서 원하는 기능 실행 가능


🥇 Version Control System

소스 코드의 생성 / 삭제 / 수정 내역을 기록하여 소프트웨어의 버전을 관리해주는 시스템
ex) svn, perforce, mercury, git 등등

  • 코드의 버전 관리
  • 코드의 백업
  • 다른 사람들과 코드를 공유
  • 여러 컴퓨터에서 코드를 사용할 수 있음

💻 Git : 가장 대표적인 VCS이면서, 가장 많이 사용되고 있음

코드 관리, 협업에서 가장 핵심적인 역할을 하는 도구
Linux를 만든 Linus B. Torvalds가 여러 Linux 개발자들과 코드 관리를 하기 위해 개발

다양한 호스팅 업체들이 서비스중 ⇒ github / gitlab / bitbucket 등

💻 Git 용어 정리

  • 리포지토리(repository) : 저장소, 하나의 프로젝트

  • 클론(clone) : 저장소 전체 내려받기

  • 커밋(commit) : 코드 변경 내역 저장 단위
    • 커밋 해시(commit hash) : 각각의 커밋마다 매겨지는 고유 hash id 값
  • 푸시(push) : 변경 내역 업로드

  • 풀(pull) : 변경 내역 다운로드

  • 깃 이그노어(Gitignore) : 관리 및 백업이 필요치 않은 파일들을 제외시키는 작업
    .gitignore 파일에 관리 대상에서 제외할 리스트를 작성
    ⇒ 사이드바의 build 디렉토리 이하의 모든 파일이 회색처리 된 것을 확인할 수 있음

  • 깃 클라이언트(Git Cllient) : git을 편하게 사용할 수 있게 도와주는 GUI 클라이언트
    ex) SourceTree, Github Desktop, TortoiseGit 등등

Git 명령어 정리

  • git init : .git 디렉토리가 생성되고 git 실행에 필요한 데이터가 디렉토리에 저장됨
    git 설치 후 cmd창이나 프로젝트 터미널에서 실행

  • git status : 현재 git 프로젝트 상태를 확인함
    Vscode의 Source Control 탭에도 변경사항에 대한 정보를 확인 가능함

  • git commit : 파일 변경 사항을 모두 staging하고 변경 내역을 저장함

  • git log : 현재까지 적용된 commit들을 확인할 수 있음


🥇 프로젝트에 Git 연결하기

Git 설치
Git Download

Git 클라이언트 중 Fork 사용
Fork Download

프로그램 다운 받은 후 프로젝트 폴더 열기
build 파일은 굳이 올릴 필요가 없으므로, .gitignore 파일을 만들어 그 안에 지정해줌

포크에서 깃헙에 올릴 파일을 stage ⇒ 변경사항을 기록한 뒤 커밋

깃헙으로 들어가서 새 리포지토리 생성 후 주소를 복사해서 가져옴
포크로 돌아와서 왼쪽 사이드바의 Remotes의 Add Remotes 클릭

깃헙 브랜치 이름이 main으로 되어있으므로 포크 브랜치 이름을 master ⇒ main로 변경
Push ⇒ 업로드가 성공적으로 되면 깃헙 아이콘이 뜸

README 파일을 추가하여 꾸밀수 있음



잘못된 부분에 대한 지적은 언제나 환영합니다.

profile
말하는 감자

0개의 댓글