Dependencies

cppkg is cppm central package repository
cppm use it by default to find requested packages
if you want to use Hunter Package Manager manager set repo="hunter"
cppm auto detect vcpkg (with package.vcpkg config) you can find package with cppm cppkg search

$ cppm cppkg search -h Usage: cppm cppkg search [--verbose] Option: --all [-a] :show all package --help [-h] :show cppm commands and options --repo [-r] {repo name} :show {repo_name}'s packages # cppkg or hunter

Adding a Dependency

add [dependencies] in your cppm.tomlfile

[dependencies] fmt = "6.2.0"

Re-run cppm build, and Cppm Search yout package thirdparty directory thirdparty/fmt/6.2.0/cppkg.toml
if can't find it cppm search from cppkg repository and copy to thirdparty/fmt/6.2.0/cppkg.toml

You can easily add unregistered packages

If you want to add unregistered package need to make cppkg.toml file cmake base unregistered package is only need 3 config version git or url *** module *** no cmake base package need to custom downloader cppm provides commands to create cppkg.toml

cppkg file generate command

$ cppm run cppkg init -h Usage: cppm cppkg init [--verbose] Option: --des [-d] {description} :add description --flags [-f] {arg} :add cmake build flags --git [-g] {repo} :add git repo --git_tag [-t] {tag} :add git tag --help [-h] :show cppm commands and options --module [-m] {module} :add module name --type [-t] {arg} :add type default is lib --uri [-U] {arg} :auto detect uri or git and version --url [-u] {url} :add url repo Require --version --version [-v] {version} :add library version Require --version

Example fmt library

6.2.0 version config

# thirdparty/fmt/6.2.0/cppkg.toml [fmt] version = "6.2.0" description = "A modern formatting library" module = "fmt::fmt" url="https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip" flags="-DFMT_DOC=OFF -DFMT_TEST=OFF -DFMT_FUZZ=OFF" # (optional) for cmake build fast flags

git repository version
git version dependency always version check in CMake build step

# thirdparty/fmt/git/cppkg.toml [fmt] version = "git" description = "A modern formatting library" module = "fmt::fmt" git="https://github.com/fmtlib/fmt.git" flags="-DFMT_DOC=OFF -DFMT_TEST=OFF -DFMT_FUZZ=OFF" # (optional) for cmake build fast flags

Easy Way to use cppkg init command

# fmt 6.2.0 $ cppm cppkg init -u "https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip" -v "6.2.0" -m "fmt::fmt" fmt # or (auto detect version) $ cppm cppkg init -U "https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip" fmt # fmt git $ cppm cppkg init -U "https://github.com/fmtlib/fmt.git" fmt # or (auto detect version) $ cppm cppkg init -g "https://github.com/fmtlib/fmt.git" -m "fmt::fmt" fmt # fmt 6.2.0 with cmake flags $ cppm cppkg init -U "https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip" --flags "-DFMT_DOC=OFF -DFMT_TEST=OFF -DFMT_FUZZ=OFF" fmt

Hunter package manager version

# cppm.toml [dependencies] fmt = {version="latest", module="fmt::fmt", repo="hunter"}

Custom Downloader

#thirdparty/fmt/6.2.0/cppkg.toml [fmt] version = "6.2.0" description = "A modern formatting library" module = "fmt::fmt" url="https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip" custom=true #helper=""(incomplete)

ExternalProject_add

# Cppkg Base Dependency Downloader # Almost same cmake ExternalProject_Add # Other Options: # - Linux Configures: # L_CONFIGURE {...}, L_BUILD {...}, L_INSTALL {...} # - Windows Configures: # W_CONFIGURE {...}, W_BUILD {...}, W_INSTALL {...} # - Install Path Options: # LOCAL(default) GLOBAL cmake_minimum_required(VERSION 3.6) project(fmt-6.2.0-install C CXX) include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppm_tool.cmake) set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH}) download_package(fmt 6.2.0 URL https://github.com/fmtlib/fmt/releases/download/6.2.0/fmt-6.2.0.zip CMAKE_ARGS ${CMAKE_ARGS} -DFMT_DOC=OFF -DFMT_TEST=OFF -DFMT_FUZZ=OFF)

Dependency Format

[${name}] version = "x.x.x|git|latest(hunter only)" type = "lib(default)|bin|cmake(incomplete)" git = "..." # if git version url = "..." # if x.x.x version module = "..." # (require) link = "public(default)|private|interface" custom = "false(default)|true" # cppm build time cppkg.toml translate ${name}.cmake.in in # if you want to custom installer(${name}.cmake.in) set true repo = "cppkg(default)|hunter" flags="${cmake build flags}" helper="Find...cmake" (optional) cmake/Modules/Find${package_name}.cmake components = "..."