콘텐츠로 건너뛰기

Static Library 명명 규칙

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

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

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

명명 규칙

제가 주로 사용하는 명명 규칙은 다음과 같습니다.

정적 라이브러리 프로젝트 이름을 gs 라고 가정하겠습니다.

PlatformRumtime LibraryMSVCBuild ConfigurationOutput
x86MDVisual Studio 2019Releaselibgs_MD_2019_x86.lib
x64MDVisual Studio 2019Releaselibgs_MD_2019_x64.lib
x86MDVisual Studio 2019Debuglibgs_MD_2019_x86D.lib
x64MDVisual Studio 2019Debuglibgs_MD_2019_x64D.lib
x86MTVisual Studio 2019Releaselibgs_MT_2019_x86.lib
x64MTVisual Studio 2019Releaselibgs_MT_2019_x64.lib
x86MTVisual Studio 2019Debuglibgs_MT_2019_x86D.lib
x64MtVisual Studio 2019Debuglibgs_MT_2019_x64D.lib

libgs_MT_2019_x64.lib 를 기준으로 각 항목의 설명은 다음과 같습니다.

lib<프로젝트이름>_<런타임 라이브러리>_<MSVC 버전>_<플랫폼><빌드 구성>.lib

lib

  • 접두어
  • 정적 라이브러리는 항상 lib로 시작

프로젝트 이름

  • 프로젝트 이름 : 여기서는 gs

런타임 라이브러리

  • MD or MT
그림1. 런타임 라이브러리

MSVC 버전

  • Microsoft Visual Studio 년도 정보
  • 회사에서는 주로 Windows Programming을 하기에 MSVC 만 사용
  • 컴파일러의 버전을 명시해도 됨

플랫폼 (아티텍처)

  • x86 or x64
그림 2.플랫폼 ( 아키텍처 )

빌드 구성

  • 릴리스는 생략
  • 디버그는 접미어 D를 붙임
그림 3. 빌드 구성

버전

  • Library의 버전을 명시

참고

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

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

부스터 명명 규칙 : https://www.boost.org/doc/libs/1_77_0/more/getting_started/windows.html#library-naming

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다