본문으로 건너뛰기

vcpkg Library 만들기

초기화

vcpkg Registry에 Port로 인식 가능한 빌드 시스템은 MSBuild, CMake, GN 등이 있습니다.

의존성 설치를 위해 vcpkg와 CMake를 사용하는 경우 vcpkg 환경 설정을 참고해주세요.

CMake

CMakeLists.txt
cmake_minimum_required(VERSION 3.15)

project(
<package>
VERSION <version>
DESCRIPTION "<description>"
HOMEPAGE_URL "<url>"
LANGUAGES CXX
)
string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER)

include(CMakePackageConfigHelpers)
include(GNUInstallDirs)

#
# 라이브러리 설정
#

add_library(
${PROJECT_NAME_LOWER}
# ...
)

# ...

#
# install 설정
#

install(
TARGETS ${PROJECT_NAME_LOWER}
EXPORT ${PROJECT_NAME}Targets
)

# ...

# ${PROJECT_NAME}Targets.cmake
install(
EXPORT ${PROJECT_NAME}Targets
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER}
)

#
# find_package를 위한 설정
#

configure_package_config_file(
"cmake/${PROJECT_NAME}Config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER}
NO_SET_AND_CHECK_MACRO
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION <version>
COMPATIBILITY SameMajorVersion
)

install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION
${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER}
)
cmake/<package>Config.cmake.in
@PACKAGE_INIT@

# ...

include("${CMAKE_CURRENT_LIST_DIR}/<project>Targets.cmake")
check_required_components(<package>)