업무 특성 상 다양한 환경에서 다양한 컴파일러로 개발 하고 있습니다.
일반적으로 솔루션 빌드 시 정적 라이브러리도 같이 빌드하고 사용하면 문제는 없으나, 솔루션 내에 포함하지 않고 이미 만들어진 정적 라이브러리를 사용하다보면 현재 솔루션의 개발 환경과 만들어진 정적 라이브러리 개발 환경이 다른 경우 링크 오류가 발생하여 빌드가 안되는 경우가 종종 발생합니다.
이를 방지하기 위해서 정적 라이브러리 생성 시 컴파일 버전 및 빌드 환경 등에 대한 정보를 파일 이름에 기록하여, 정적 라이브러리를 사용하는 사람이 개발 환경에 맞게 사용할 수 있도록 유도하고 있습니다.
명명 규칙
제가 주로 사용하는 명명 규칙은 다음과 같습니다.
정적 라이브러리 프로젝트 이름을 gs
라고 가정하겠습니다.
Platform | Rumtime Library | MSVC | Build Configuration | Output |
x86 | MD | Visual Studio 2019 | Release | libgs_MD_2019_x86.lib |
x64 | MD | Visual Studio 2019 | Release | libgs_MD_2019_x64.lib |
x86 | MD | Visual Studio 2019 | Debug | libgs_MD_2019_x86D.lib |
x64 | MD | Visual Studio 2019 | Debug | libgs_MD_2019_x64D.lib |
x86 | MT | Visual Studio 2019 | Release | libgs_MT_2019_x86.lib |
x64 | MT | Visual Studio 2019 | Release | libgs_MT_2019_x64.lib |
x86 | MT | Visual Studio 2019 | Debug | libgs_MT_2019_x86D.lib |
x64 | Mt | Visual Studio 2019 | Debug | libgs_MT_2019_x64D.lib |
libgs_MT_2019_x64.lib
를 기준으로 각 항목의 설명은 다음과 같습니다.
lib<프로젝트이름>_<런타임 라이브러리>_<MSVC 버전>_<플랫폼><빌드 구성>.lib
lib
- 접두어
- 정적 라이브러리는 항상
lib
로 시작
프로젝트 이름
- 프로젝트 이름 : 여기서는 gs
런타임 라이브러리
- MD or MT
MSVC 버전
- Microsoft Visual Studio 년도 정보
- 회사에서는 주로 Windows Programming을 하기에 MSVC 만 사용
- 컴파일러의 버전을 명시해도 됨
플랫폼 (아티텍처)
- x86 or x64
빌드 구성
- 릴리스는 생략
- 디버그는 접미어
D
를 붙임
버전
- Library의 버전을 명시
참고
제가 적은 것은 제가 개발하는 환경에 맞춘 것이기 때문에 각자 개발하는 환경에 따라서 명명 규칙을 정하고 따르는 것이 좋을 것 같습니다.
부스터에서도 명명 규칙이 존재하니 참고 하셔서 정하시면 될 것 같습니다.
부스터 명명 규칙 : https://www.boost.org/doc/libs/1_77_0/more/getting_started/windows.html#library-naming