C++ Chapter 20.3 : 외부 라이브러리 설치, 프로젝트 템플릿

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 20. 중급 프로그래머들의 상식

외부 라이브러리 설치해보기

연습 삼아 NanoGUI 라는 라이브러리를 설치한다고 가정해보자. 이 라이브러리는 라이브러리들을 많이 사용하고 있어서 설치하기 가장 복잡한 사례다.

첫 번째 방법 : git clone

git clone --recursive https://github.com/wjakob/nanogui

  • Github 원격 서버에 있는 NonoGUI 라이브러리를 로컬 Repository로서 받아 온다.
  • --recursive까지 붙여주면 이 라이브러리가 포함하고 있는 다른 라이브러리들까지 전부 다 clone 된다.

두 번째 방법 : CMake 사용

  1. CMake 설치
    • cmake 홈페이지 - 다운로드 - binary distribution 에서 알맞는 버전의 cmake 다운받기
  2. CMake 실행
    • ‘Where is the source code’ 부분에 원격 저장소 주소를 적어준다. https://github.com/wjakob/nanogui
    • 이렇게 클론해오면 클론한 로컬 저장소에 CMakeLists.txt📁build 폴더가 생긴 것을 볼 수 있다. 이 📁build 폴더 위치를 ‘where to build the binaries’에 적어준다.
    • Configure 를 누르고 이어서 Generate을 눌러주면 빌드가 완료되어 📁build 폴더에 NonoGUI.sln 솔루션 파일이 생성되있을 것이다.


외부 라이브러리의 코드를 사용하고 싶을 때

외부 라이브러리 코드를 사용하려 할땐 외부 라이브러리의 프로젝트 속성 설정 값들과 동일해야 한다.

  • 외부 라이브러리의 아래 설정들과 동일하게 맞춰야 한다.
    • 디버그 모드, 릴리즈 모드에 따라 프로젝트 설정도 다 다르므로 주의하자.

    • 프로젝트 속성 - C/C++ - 일반 - 추가 포함 디렉터리
      • include 헤더 파일들의 경로
    • 프로젝트 속성 - 링커 - 일반 - 추가 라이브러리 디렉터리
      • lib 파일 경로
    • 프로젝트 속성 - C/C++ - 전처리기 - 전처리기 정의
    • dll 파일 설정 맞추기
      • 외부 라이브러리 로컬 저장소의, 랄라주 모드라면 📁release 에, 디버그 모드라면 📁Debug 있는 dll파일을 복사하여 내 프로젝트 로컬 폴더 위치에 넣어주어야 한다.
        • 두 모드를 다 사용할 것이라 dll파일을 두개 복사해와야 한다면 동일한 폴더 내에 이름이 같은 두 파일이 존재하면 안되므로 릴리즈 모드용 dll파일은 내 프로젝트 로컬 폴더의 📁release 에 넣어주자.
        • 혹은 아예 클론해온 외부 라이브러리 로컬 폴더의 dll파일이 있는 주소를 비주얼 스튜디오에게 알려주어도 된다.
          • 프로젝트 속성 - 구성 속성 - 디버깅모드 - 환경
            • PATH = “클론해온 외부 라이브러리의 로컬 폴더의 dll 파일이 있는 위치”
    • 프로젝트 속성 - 코드 생성 - 런타임 라이브러리
      • 값도 동일해야 한다. 이부분은 외부 라이브러리를 따라할 필요는 없고 외부 라이브러리를 내 것과 맞게 바꿔도 된다.

프로젝트 템플릿

매번 외부 라이브러리를 사용할 때마다 위와 같이 설정들을 일일이 맞춰줘야 하는게 번거롭다면

자주 사용하려는 외부 라이브러리 cpp 코드를 열고 프로젝트 - 템플릿 내보내기 해주면 이 코드와 함께 이 프로젝트에 설정된 모든 설정값이 그대로 보존된 채로 템플릿을 만들 수 있다. 만들어둔 템플릿을 사용하기만 하면 된다. 다만 이렇게 해도 dll파일은 수동으로 옮겨주어야 한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀
린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기