Conan 패키지 관리자 사용법 및 프로젝트 구조 안내

Conan: C/C++ 전용 오픈소스 패키지 관리 도구 소개

Conan은 크로스플랫폼, 분산형, 그리고 커뮤니티 기반의 C 및 C++ 라이브러리 관리를 위한 강력한 도구입니다. 이 문서는 Conan의 기본 구조와 구성 요소를 중심으로 실질적인 사용 방법을 설명합니다.

기본 프로젝트 구조

Conan 패키지를 개발하거나 사용할 때 일반적으로 따라야 할 디렉터리 구조는 다음과 같습니다:

.
├── conanfile.py                  # 패키지 메타정보 및 빌드 정의
├── conanexports.txt              # 내보낼 파일 목록 (옵션)
├── src/                          # 소스 코드 저장 폴더
│   └── main.cpp
├── test_package/                 # 패키지 테스트용 예제 프로젝트
│   ├── conanfile.py
│   └── main_test.cpp
└── README.md                     # 프로젝트 설명 문서

이 구조는 패키지 생성, 빌드, 테스트, 배포를 효율적으로 수행하기 위한 표준입니다.

핵심 구성 요소: conanfile.py

conanfile.py는 모든 작업의 중심이 되는 설정 파일이며, 파이썬 스크립트 형식으로 작성됩니다. 이 파일은 패키지의 속성과 빌드 로직을 정의합니다.

주요 구성 항목

  • name: 패키지 이름 (예: jsoncpp)
  • version: 버전 정보 (예: 1.9.0)
  • license: 라이선스 유형 (예: MIT, Apache-2.0)
  • url: 공식 홈페이지 또는 리포지토리 주소
  • description: 간단한 설명

의존성 설정

패키지가 다른 라이브러리에 의존하는 경우, requires를 통해 선언합니다:

requires = "zlib/1.2.11", "openssl/1.1.1k"

환경 설정 (settings)

빌드 환경을 지정하여 다양한 플랫폼에서 호환성을 확보합니다:

settings = "os", "arch", "compiler", "build_type"
  • os: Windows, Linux, macOS 등
  • arch: x86, x86_64, armv7, aarch64 등
  • compiler: gcc, clang, msvc 등
  • build_type: Debug, Release 등

컴파일 옵션 (options)

사용자가 선택적으로 활성화할 수 있는 기능을 정의할 수 있습니다:

options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}

빌드 로직 (build() 메서드)

실제 빌드 프로세스를 정의합니다. CMake를 사용하는 경우:

def build(self):
    cmake = CMake(self)
    cmake.configure()
    cmake.build()

패키징 (package() 메서드)

빌드된 결과물 중 필요한 파일만 포함하여 패키지로 묶습니다:

def package(self):
    self.copy("*.h", dst="include", src="src")
    self.copy("*.a", dst="lib", keep_path=False)
    self.copy("*.so*", dst="lib", keep_path=False)

패키지 정보 (package_info())

빌드 시스템(예: CMake, Make)이 사용할 수 있도록 링크 정보를 제공합니다:

def package_info(self):
    self.cpp_info.libs = ["mypkg"]
    self.cpp_info.includedirs = ["include"]
    self.cpp_info.libdirs = ["lib"]

빠른 시작: 새 패키지 생성

명령줄에서 새로운 패키지를 생성하려면 다음 명령어를 사용합니다:

conan new mylib/1.0@user/testing

이 명령어는 위의 구조를 자동으로 생성하고, 기본적인 conanfile.pytest_package도 함께 만듭니다.

주요 명령어 활용

명령어 설명
conan install . 의존성 설치 및 빌드 환경 준비
conan build . 현재 디렉터리의 패키지 빌드
conan package . 패키지 생성 (빌드 후 실행)
conan upload <package> -r=remote 원격 저장소에 업로드

태그: Conan C++ cmake package manager Dependency Management

7월 8일 08:34에 게시됨