개요
업무 특성상 다양한 환경에서 다양한 컴파일러로 개발을 하고 있습니다.
항상 최신 버전의 컴파일러를 사용하여 배포하면 큰 문제는 없을 것 같은데, 유지보수와 관련하여 구버전 컴파일러에서 개발해야 하는 경우가 종종 발생합니다.
일반적으로 솔루션 내에서 정적 라이브러리를 빌드 및 링크하여 사용하면 문제는 없으나, 솔루션 내에 포함하지 않고 만들어진 정적 라이브러리를 링크해서 사용하다보면 솔루션 개발 환경과 정적 라이브러리 개발 환경이 다른 경우 링크 오류가 발생하여 빌드가 안되는 경우가 종종 발생합니다.
이를 방지하기 위해서 정적 라이브러리 생성 시 컴파일러 버전 및 빌드 환경 등에 대한 정보를 파일 이름에 기록하여, 정적 라이브러리를 사용하는 사람이 개발 환경에 맞게 사용할 수 있도록 유도하고 있습니다.
명명 규칙
제가 주로 사용하는 라이브러리의 명명 규칙은 다음과 같습니다.
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를 붙임
Version
◾ 주로 오픈 소스 일 경우 버전을 명시 ( optional )
참고
제가 적은 것은 제가 개발하는 환경에 맞춘 것이기 때문에 각자 개발하는 환경에 따라서 명명 규칙을 정하고 따르는 것이 좋을 것 같습니다.
부스터에서도 명명 규칙이 존재하니 참고 하셔서 정하시면 될 것 같습니다.
https://www.boost.org/doc/libs/1_77_0/more/getting_started/windows.html#library-naming
'Programming > C++' 카테고리의 다른 글
jsoncpp 사용하기 #1 - jsoncpp 라이브러리 빌드 및 프로젝트 구성 (0) | 2021.12.13 |
---|