
이 장에서 알 수 있는 것 CMake의 기본 구문CMake의 명령 및 변수에 대한 소개연습 1: Building a Basic Project (기초 프로젝트 빌드하기) 가장 기본적인 CMake 프로젝트는 단일 소스 코드 파일로 작성된 실행 파일이다. 이러한 간단한 프로젝트의 경우 세 가지 명령이 포함된 CMakeLists.txt 파일만 있으면 충분하다. 1. cmake_minimum_required() 어떤 프로젝트든 최상위 CMakeLists.txt 파일은 최소 CMake 버전을 지정하는 cmake_minimum_required() 명령으로 시작해야 한다. 이는 정책 설정을 확립하고 이후 CMake 기능이 호환 가능한 CMake 버전에서 실행되도록 보장한다. 2. project()프로젝트를 시작..

CMake 공부할 때 참고한 사이트https://cmake.org/cmake/help/latest/guide/tutorial/index.html# CMake Tutorial — CMake 3.31.3 DocumentationIntroduction The CMake tutorial provides a step-by-step guide that covers common build system issues that CMake helps address. Seeing how various topics all work together in an example project can be very helpful.cmake.org 예제 파일 다운로드 CMake 튜토리얼 예제 소스파일은 메인 페이지의 'Steps' 중제목..

CMake 설치 아래의 링크에 들어가서 OS에 맞는 CMake 설치한다.https://cmake.org/download/ Download CMakeYou can either download binaries or source code archives for the latest stable or previous release or access the current development (aka nightly) distribution through Git. This software may not be exported in violation of any U.S. export laws or regulatiocmake.org 필자는 윈도우 OS를 사용하므로 플랫폼이 Windows x64 Installer 인 설치 ..

C++ 환경에서 접할 수 있는 대표적인 메모리 오류 1. 메모리 누수(Memory Leak) 'new'로 할당한 메모리를 해제하지 않을 때 쓰이지 않는 메모리가 지속적으로 쌓이면서 시스템 메모리를 고갈시킴 시간이 지날수록 프로그램 속도가 느려지고 나중에는 강제 종료가 되기도 함 2. 댕글링 포인터(Dangling Pointer) 메모리를 해제할 때 이미 해제한 메모리에 접근하다 발생하는 접근 오류 프로그램이 강제 종료될 수도 있음 3. 메모리 단편화(Memory Fragmentation) 잦은 할당과 해제로 만들어진 메모리 파편들이 후에 새롭게 할당 하는 것을 방해하는 문제 극단적으로 파편화된 메모리는 새로운 메모리 공간을 찾는 데 CPU 소모량이 높아지거나 결국 할당에 실패함 스택 메모리를 좀 더 똑똑..

클래스, 구조체 네이밍 방법 클래스 대문자로 시작하되 'C' 접두어를 기입 클래스 객체는 대문자로 시작 구조체 구조체는 대문자와 언더바로 작성하고 ST_접두어로 시작 구조체 객체는 'st'와 대문자로 시작 // 클래스 네이밍 class CMyClass; CMyClass Myclass; // 구조체 네이밍 struct ST_ELEMENT ST_ELEMENT stElement; 클래스에 'Manager' 용어는 피하기 'Manager' 라는 단어는 어떠한 행동을 수행하는지 모호하게 해석될 수 있으므로 좀 더 구체적인 행위를 표현하는 단어로 네이밍을 해야 함 // 고객 정보를 담아두는 역할 class CCustomerContainer { // TODO } // 고객 정보를 접근하는 역할 class CCusto..

정적 라이브러리 사용의 목적 빌드 시간이 단축됨 소스코드를 공개하지 않고 기능을 제공할 수 있음 동적 라이브러리에 비해 안전함 재사용 가능한 코드를 지속적으로 모아둘 수 있음 여럿이 효율적으로 개발할 수 있는 아키텍처를 설계할 수 있음 정적 라이브러리 만들기 1. 정적 라이브러리 프로젝트 생성 2. 소스 트리 정리 3. 기능 구현 4. 빌드 및 확인 정적 라이브러리 배포하기 배포할 때 유의 사항 빌드 후, 라이브러리 파일과 헤더파일 두가지를 제공해야 한다. 정적 라이브러리 사용하기 1. 컴파일러 지시자 이용 컴파일러에게 코드로 라이브러리 경로를 알려주는 방법 #pragma comment(lib,".lib 가 있는 디렉토리 주소") #include"../[라이브러리 이름]/[함수].h" 2. Visual ..

파일 비우기 처음 프로젝트를 생성할 때 '빈 프로젝트' 로 생성하기 솔루션 탐색기 메뉴의 '소스 파일', '헤더 파일'은 제거하기 공통 헤더파일 만들기 코드 전체적으로 자주 사용되는 구문이나 헤더를 한곳에 모아서 중복되는 코드를 정리하는 기술 반복적으로 작성될 코드를 모아둘 수 있음 매번 파일에 새로 작성하는 수고로움이 줄어듬 리소스 파일 추가하기 산출물 관리를 위한 디렉터리 정리 빌드 파일과 소스 파일을 분리하여 산출물 관리를 편하게 배치하는 것이 핵심 *파일 디렉터리 설정법 속성 메뉴 상단의 '구성', '플랫폼' 을 '모든 구성', '모든 플랫폼' 설정으로 변경 출력 디렉터리와, 중간 디렉터리 설정을 아래 주소로 설정 출력 디렉터리 $ (ProjectDir)\..\..\Build\$(Platform)..

1. AR 프로젝트 생성 여기서 Anchor Creator 에 프리팹을 적용하면 AR 화면상에 물체가 생성된다. 2. Project Setting Minimum API Level은 최소 'Android 7.0 'Nougat' 으로 설정하자 XR Plug-in Management 메뉴의 안드로이드 설정에 들어가서 'ARCore' 체크박스를 활성화하자. 3. Build Setting 플랫폼은 Android 으로 설정하자. Run device 메뉴에서 본인의 휴대폰을 선택하자. (본인의 스마트폰의 개발자옵션에서USB 옵션을 활성화 해야 한다.) 빌드를 하면 된다.
보호되어 있는 글입니다.
설명 ByteWap() 함수를 사용하면 자료형 크기에 맞는 엔디언 변환 함수가 선택된다. 값 형식 자료형에 대응하기 위하여 템플릿을 사용했다. 내부적으로 엔디언 변환 연산과정을 거칠 때 캐스팅 작업이 진행된다. #pragma once #include using namespace std; // 2바이트 엔디언 변환 함수 inline uint16_t ByteSwap2(uint16_t inData) { return (inData >> 8) | (inData > 24) & 0x000000ff) | ((inData >> 8) & 0x0000ff00) | ((inData 56) & 0x00000000000000ff | (inData >> 40) & 0x000000000000ff00 | (inData >> 24) &..