
C++은 강력한 언어지만, 다른 언어들에 비해 종속성(Dependency) 관리가 복잡한 편이다. 이를 해결해주는 도구가 바로 패키지 매니저(Package Manager) 이다. 이 글에서는 C++ 생태계에서 널리 사용되는 패키지 매니저들을 정리해 본다.
패키지 매니저는 외부 라이브러리 설치, 업그레이드, 제거, 종속성 관리 등을 자동으로 처리해주는 도구다. C++에서는 아래와 같은 패키지 매니저들이 사용된다.
vcpkg는 Microsoft가 개발한 오픈소스 C/C++용 패키지 매니저다. Windows뿐 아니라 Linux, macOS도 지원하며, Visual Studio와 자연스럽게 연동된다는 점이 큰 장점이다.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # macOS/Linux
.\bootstrap-vcpkg.bat # Windows
vcpkg search boost # 패키지 검색
vcpkg install boost # 패키지 설치
vcpkg remove boost # 패키지 제거
vcpkg list # 설치된 패키지 확인
vcpkg integrate install # VS 연동 (Windows)
Conan은 C/C++을 위한 분산형 패키지 매니저다. 멀티 플랫폼 지원은 물론이고, CMake, MSBuild 등 다양한 빌드 시스템과 통합된다. pip으로 쉽게 설치할 수 있고, 자체적으로 패키지를 만들어 배포할 수 있다.
pip install conan
# conanfile.txt
[requires]
boost/1.75.0
[generators]
cmake
mkdir build && cd build
conan install ..
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
from conans import ConanFile, CMake
class MyLibraryConan(ConanFile):
name = "MyLibrary"
version = "0.1"
generators = "cmake"
settings = "os", "compiler", "build_type", "arch"
def build(self):
cmake = CMake(self)
cmake.configure(source_folder="src")
cmake.build()
conan create . username/channel
Spack은 고성능 컴퓨팅(HPC)을 겨냥한 패키지 매니저로, 여러 버전과 아키텍처를 동시에 관리할 수 있다. 과학 및 엔지니어링 소프트웨어 설치에 적합하다.
git clone https://github.com/spack/spack.git
cd spack
. share/spack/setup-env.sh
spack install hdf5
spack load hdf5
spack find
spack uninstall hdf5
⸻
NuGet은 .NET 생태계를 위한 패키지 매니저지만, PackageReference를 통해 C++ 프로젝트에서도 사용할 수 있다. 주로 Windows, Visual Studio 환경에서 유용하다.
Visual Studio에서:
Tools > NuGet Package Manager > Manage NuGet Packages for Solution...
또는 vcxproj 파일에서 직접 명시:
<PackageReference Include="PackageName" Version="1.0.0" />
CLI에서도 사용 가능:
nuget install PackageName
nuget update PackageName
C++은 전통적으로 빌드와 종속성 관리가 까다로웠지만, 요즘은 다양한 패키지 매니저가 등장하며 많이 개선되었다. 운영체제, IDE, 팀의 개발 환경에 따라 적절한 도구를 선택하여 효율적인 개발을 해보자.