생각의 기록

꿈꾸는 개발자 하늘고래의 프로그래밍 이야기

Programming/C++

Static Library 명명 규칙

하늘고래c 2021. 12. 1. 21:51

개요

업무 특성상 다양한 환경에서 다양한 컴파일러로 개발을 하고 있습니다.

 

항상 최신 버전의 컴파일러를 사용하여 배포하면 큰 문제는 없을 것 같은데, 유지보수와 관련하여 구버전 컴파일러에서 개발해야 하는 경우가 종종 발생합니다.

 

일반적으로 솔루션 내에서 정적 라이브러리를 빌드 및 링크하여 사용하면 문제는 없으나, 솔루션 내에 포함하지 않고 만들어진 정적 라이브러리를 링크해서 사용하다보면 솔루션 개발 환경과 정적 라이브러리 개발 환경이 다른 경우 링크 오류가 발생하여 빌드가 안되는 경우가 종종 발생합니다.

 

이를 방지하기 위해서 정적 라이브러리 생성 시 컴파일러 버전 및 빌드 환경 등에 대한 정보를 파일 이름에 기록하여, 정적 라이브러리를 사용하는 사람이 개발 환경에 맞게 사용할 수 있도록 유도하고 있습니다. 

 

명명 규칙

제가 주로 사용하는 라이브러리의 명명 규칙은 다음과 같습니다.

 

Name Platform Runtime
Library
MSVC Build
Configuration
Output
wahlec x86 MT Visual Studio 2013 debug libwhalec_MT_2013_x86D.lib
x64 MT Visual Studio 2013 debug libwhalec_MT_2013_x64D.lib
x86 MT Visual Studio 2013 release libwhalec_MT_2013_x64.lib
x64 MT Visual Studio 2013 release libwhalec_MT_2013_x64.lib
x86 MD Visual Studio 2019 release libwhalec_MD_2019_x86.lib
x64 MD Visual Studio 2019 release libwhalec_MD_2019_x64.lib
x64 MD Visual Studio 2022 debug libwhalec_MD_2022_x64D.lib
x64 MD Visual Studio 2022 release libwhalec_MD_2022_x64.lib

 

libwhalec_MT_2013_x86D.lib 기준으로 각 항목에 대한 설명은 다음과 같습니다.


lib

 ◾ 접두어

 ◾ 정적 라이브러리는 항상 lib로 시작

 

whalec

 ◾ 라이브러리 이름

 

MD

 ◾ 런타임 라이브러리 정보 ( MT or MD )

런타임 라이브러리

 

2013

 ◾ Microsoft Visual Studio 년도 정보

 ◾ 회사에서는 주로 Windows Programming을 하기에 MSVC 만 사용

 ◾ 컴파일러의 버전을 명시해도 됨

 

x86

 ◾ 플랫폼

 ◾ 보다 정확하게는 Architecture

플랫폼

 

D ( Build Configuration )

 ◾ Release로 빌드 시 아무것도 붙이지 않음

 ◾ Debug로 빌드 시 접미어로 D를 붙임

Build Configuration

Version

 ◾ 주로 오픈 소스 일 경우 버전을 명시 ( optional )

 

참고

 

제가 적은 것은 제가 개발하는 환경에 맞춘 것이기 때문에 각자 개발하는 환경에 따라서 명명 규칙을 정하고 따르는 것이 좋을 것 같습니다.

 

부스터에서도 명명 규칙이 존재하니 참고 하셔서 정하시면 될 것 같습니다. 

https://www.boost.org/doc/libs/1_77_0/more/getting_started/windows.html#library-naming