[빠른 노트] cpp (static) 라이브러리 추가해서 사용하고, 만들기
include, lib 폴더를 source가 있는 폴더에 추가해 줍니다! (사실 꼭 이 이름이 아니어도 됩니다.
어차피 어느 폴더인지 이름을 Visual Studio에사 지정해 줄 것이기 때문에..)
각각의 폴더에 .h 파일과 .lib(바이너리. h에 명시된 함수들의 구현)파일을 넣어줍니다.
요렇게요.. asio(asynchronous IO)는 유명한 library이죠...
원래 boost라는 커다란 라이브러리들의 모음의 일부인데 asio에서 필요한 부분만 저렇게 가져왔습니다.
밑에 StaticSample.h는 학교에서 준 샘플 라이브러리고요.
이제 visual studio에서 추가한 헤더파일들을 찾을 수 있게 설정해 줍니다.
Visual Studio 2019 기준,
Project > Properties > C/C++ > General에서 Additional Include Directories에 ./include를 추가해 줍니다.
.은 프로젝트 폴더 루트입니다. 그 밑에 include라고 저희가 방금 만들어진 폴더를 추가해주면
이제 여기서 visual studio가 헤더파일 등을 찾을 수 있게 됩니다.
라이브러리 바이너리 파일은 linker > General > Aditional Library Directories에서 아까 저희가
바이너리 파일을 담아 둔 디렉터리 ./lib를 지정해 줍니다.
그리고 Input에서 사용할 library file이름을 다 입력해 주어야 해요.
delimter로 ;을 써서 구분하시면 됩니다.
저희는 StaticSample 만 썼어요. 그것만 추가해줄게요.
이제 프로젝트에서 추가한 library들을 #include해 올 수 있어요.
"헤더파일_이름.h" 라고 바로 써도 파일 위치를 찾을 수 있는건
아까 저희가 include directories 설정을 해주었기 때문입니다.
그렇게 안하고 "include/"처럼 폴더를 명시해 주어도 됩니다.
//set path from preferences >
#include "StaticSample.h"
//or from the parent directory of source file : path after ./
// #include "include/name.h"
Static Library 만들기 |
아까 그 Preferences에서 Precompiled Header가 Use로 설정되어 있으면 Not Using으로 바꿔주세요!
먼저 헤더파일을 써줍니다.
저는 Vector3를 만들었어요.. 내부적으로는 std::vector를 써서 3차원 벡터를 구현한 간단한 class입니다.
mid 함수는 두 벡터의 중점을 가져다 주는 함수입니다.
그리고 cpp파일에서 각 함수를 구현해 주면 됩니다.
Vector3.cpp
#include "Vector3.h"
float Vector3::x() const { return _coords[0]; }
float Vector3::y() const { return _coords[1]; }
float Vector3::z() const { return _coords[2]; }
Vector3 Vector3::mid(const Vector3& a, const Vector3& b) {
return Vector3((a.x() + b.x()) / 2, (a.y() + b.y()) / 2, (a.z() + b.z()) / 2);
}
그럼 이제 build하면 library가 만들어집니다.
바로 사용하시려면 라이브러리 프로젝트 이름을 우클릭하고
open folder in file explorer를 통해서 저장된 폴더로 바로 이동할 수 있어요.