[mapbox-variant] add cmakeconfig (#47738)

This commit is contained in:
Saikari 2025-10-13 22:30:25 +03:00 committed by GitHub
parent 5451aa7b8f
commit 386a78bd37
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 141 additions and 10 deletions

View File

@ -0,0 +1,58 @@
cmake_minimum_required(VERSION 3.16)
project(variant-library VERSION 1.1.3 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
add_library(variant INTERFACE)
target_include_directories(variant
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_compile_features(variant INTERFACE cxx_std_11)
find_package(Threads)
if(TARGET Threads::Threads)
target_link_libraries(variant INTERFACE Threads::Threads)
endif()
install(DIRECTORY "include/mapbox"
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(TARGETS variant
EXPORT unofficial-mapbox-variant-targets
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(EXPORT unofficial-mapbox-variant-targets
FILE unofficial-mapbox-variant-targets.cmake
NAMESPACE unofficial::mapbox-variant::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-mapbox-variant
)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/unofficial-mapbox-variant-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/unofficial-mapbox-variant-config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-mapbox-variant
PATH_VARS CMAKE_INSTALL_INCLUDEDIR
)
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/unofficial-mapbox-variant-config-version.cmake"
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/unofficial-mapbox-variant-config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/unofficial-mapbox-variant-config-version.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/unofficial-mapbox-variant
)

View File

@ -1,15 +1,21 @@
# header-only
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO mapbox/variant
REF a2a4858345423a760eca300ec42acad1ad123aa3 # v1.2.0
REF a2a4858345423a760eca300ec42acad1ad123aa3 # v1.2.0
SHA512 6d1ad2f37e137c42592dbd618a3871008d4f83b3cb0d6f05a9c469a6a987ed3fc7f0416ae341646d73e69426903a5a4f64b9f41ae739fd940bbd304dfcae289e
HEAD_REF master
)
# Copy header files
file(COPY ${SOURCE_PATH}/include/mapbox/ DESTINATION ${CURRENT_PACKAGES_DIR}/include/mapbox FILES_MATCHING PATTERN "*.hpp")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-mapbox-variant-config.cmake.in" DESTINATION "${SOURCE_PATH}")
# Handle copyright
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/mapbox-variant)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/mapbox-variant/LICENSE ${CURRENT_PACKAGES_DIR}/share/mapbox-variant/copyright)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/unofficial-mapbox-variant" PACKAGE_NAME "unofficial-mapbox-variant")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug" "${CURRENT_PACKAGES_DIR}/lib")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE" "${SOURCE_PATH}/LICENSE_1_0.txt")

View File

@ -0,0 +1,9 @@
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(Threads)
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-mapbox-variant-targets.cmake")
check_required_components(unofficial-mapbox-variant)

View File

@ -1,6 +1,18 @@
{
"name": "mapbox-variant",
"version": "1.2.0",
"port-version": 2,
"description": "C++11/C++14 Variant"
"port-version": 3,
"description": "C++11/C++14 Variant",
"homepage": "https://github.com/mapbox/variant",
"license": "BSD-3-Clause AND BSL-1.0",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@ -0,0 +1,5 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
)
vcpkg_cmake_build()

View File

@ -0,0 +1,7 @@
cmake_minimum_required(VERSION 3.25.1)
project(mapbox-variant-test LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(unofficial-mapbox-variant CONFIG REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE unofficial::mapbox-variant::variant)

View File

@ -0,0 +1,17 @@
#include <mapbox/variant.hpp>
#include <stdexcept>
struct check
{
template <typename T>
void operator()(T const& val) const
{
if (val != 0) throw std::runtime_error("invalid");
}
};
int main()
{
typedef mapbox::util::variant<bool, int, double> variant_type;
variant_type v(0);
mapbox::util::apply_visitor(check(), v);
return 0;
}

View File

@ -0,0 +1,12 @@
{
"name": "vcpkg-ci-mapbox-variant",
"version-string": "ci",
"description": "Validates mapbox-variant",
"dependencies": [
"mapbox-variant",
{
"name": "vcpkg-cmake",
"host": true
}
]
}

View File

@ -6162,7 +6162,7 @@
},
"mapbox-variant": {
"baseline": "1.2.0",
"port-version": 2
"port-version": 3
},
"mapbox-wagyu": {
"baseline": "0.5.0",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "de1b41d44f7921f7ac78a235025df3a3908e2af0",
"version": "1.2.0",
"port-version": 3
},
{
"git-tree": "2bbebe72c660725c3540133f722ad9cac7dc2c5c",
"version": "1.2.0",