mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-17 06:37:43 -05:00
Apply clang-format and cmake-format and add style check workflow (#171)
* apply clang-format and cmake-format and add style check workflow * add declare package definition * add additional public methods and rename internals * change development verison tag to 1.0.0 * rename internal method * rename public method * rename test var * update copyright and fix comment * typo * run fix-format * fix test function names
This commit is contained in:
16
.clang-format
Normal file
16
.clang-format
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
BasedOnStyle: Google
|
||||
AccessModifierOffset: '-2'
|
||||
AlignTrailingComments: 'true'
|
||||
AllowAllParametersOfDeclarationOnNextLine: 'false'
|
||||
AlwaysBreakTemplateDeclarations: 'No'
|
||||
BreakBeforeBraces: Attach
|
||||
ColumnLimit: '100'
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: 'true'
|
||||
IncludeBlocks: Regroup
|
||||
IndentPPDirectives: AfterHash
|
||||
IndentWidth: '2'
|
||||
NamespaceIndentation: All
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeTernaryOperators: 'true'
|
||||
...
|
||||
71
.cmake-format
Normal file
71
.cmake-format
Normal file
@@ -0,0 +1,71 @@
|
||||
format:
|
||||
tab_size: 2
|
||||
line_width: 100
|
||||
dangle_parens: true
|
||||
|
||||
parse:
|
||||
additional_commands:
|
||||
cpmaddpackage:
|
||||
pargs:
|
||||
nargs: '*'
|
||||
flags: []
|
||||
spelling: CPMAddPackage
|
||||
kwargs: &cpmaddpackagekwargs
|
||||
NAME: 1
|
||||
FORCE: 1
|
||||
VERSION: 1
|
||||
GIT_TAG: 1
|
||||
DOWNLOAD_ONLY: 1
|
||||
GITHUB_REPOSITORY: 1
|
||||
GITLAB_REPOSITORY: 1
|
||||
GIT_REPOSITORY: 1
|
||||
SVN_REPOSITORY: 1
|
||||
SVN_REVISION: 1
|
||||
SOURCE_DIR: 1
|
||||
DOWNLOAD_COMMAND: 1
|
||||
FIND_PACKAGE_ARGUMENTS: 1
|
||||
NO_CACHE: 1
|
||||
GIT_SHALLOW: 1
|
||||
URL: 1
|
||||
URL_HASH: 1
|
||||
URL_MD5: 1
|
||||
DOWNLOAD_NAME: 1
|
||||
DOWNLOAD_NO_EXTRACT: 1
|
||||
HTTP_USERNAME: 1
|
||||
HTTP_PASSWORD: 1
|
||||
OPTIONS: +
|
||||
cpmfindpackage:
|
||||
pargs:
|
||||
nargs: '*'
|
||||
flags: []
|
||||
spelling: CPMFindPackage
|
||||
kwargs: *cpmaddpackagekwargs
|
||||
cpmdeclarepackage:
|
||||
pargs:
|
||||
nargs: '*'
|
||||
flags: []
|
||||
spelling: CPMDeclarePackage
|
||||
kwargs: *cpmaddpackagekwargs
|
||||
packageproject:
|
||||
pargs:
|
||||
nargs: '*'
|
||||
flags: []
|
||||
spelling: packageProject
|
||||
kwargs:
|
||||
NAME: 1
|
||||
VERSION: 1
|
||||
INCLUDE_DIR: 1
|
||||
INCLUDE_DESTINATION: 1
|
||||
BINARY_DIR: 1
|
||||
COMPATIBILITY: 1
|
||||
VERSION_HEADER: 1
|
||||
DEPENDENCIES: +
|
||||
cpmusepackagelock:
|
||||
pargs: 1
|
||||
spelling: CPMUsePackageLock
|
||||
cpmregisterpackage:
|
||||
pargs: 1
|
||||
spelling: CPMRegisterPackage
|
||||
cpmgetpackageversion:
|
||||
pargs: 2
|
||||
spelling: CPMGetPackageVersion
|
||||
4
.github/workflows/publish.yaml
vendored
4
.github/workflows/publish.yaml
vendored
@@ -15,8 +15,8 @@ jobs:
|
||||
- name: Set CPM version by tag
|
||||
run: |
|
||||
mkdir dist
|
||||
sed "s/0.27.2-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/CPM.cmake > dist/CPM.cmake
|
||||
sed "s/0.27.2-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/get_cpm.cmake > dist/get_cpm.cmake
|
||||
sed "s/1.0.0-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/CPM.cmake > dist/CPM.cmake
|
||||
sed "s/1.0.0-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/get_cpm.cmake > dist/get_cpm.cmake
|
||||
|
||||
- name: Upload CPM.cmake to release
|
||||
uses: svenstaro/upload-release-action@v1-release
|
||||
|
||||
28
.github/workflows/style.yml
vendored
Normal file
28
.github/workflows/style.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
name: Style
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
style:
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Install format dependencies
|
||||
run: |
|
||||
brew install clang-format
|
||||
pip3 install cmake_format==0.6.11 pyyaml
|
||||
|
||||
- name: configure
|
||||
run: cmake -Htest/style -Bbuild/style
|
||||
|
||||
- name: check style
|
||||
run: cmake --build build/style --target check-format
|
||||
268
cmake/CPM.cmake
268
cmake/CPM.cmake
@@ -5,7 +5,7 @@
|
||||
# MIT License
|
||||
# -----------
|
||||
#[[
|
||||
Copyright (c) 2019 Lars Melchior
|
||||
Copyright (c) 2021 Lars Melchior and additional contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -28,12 +28,14 @@
|
||||
|
||||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
|
||||
set(CURRENT_CPM_VERSION 0.27.2-development-version)
|
||||
set(CURRENT_CPM_VERSION 1.0.0-development-version)
|
||||
|
||||
if(CPM_DIRECTORY)
|
||||
if(NOT CPM_DIRECTORY STREQUAL CMAKE_CURRENT_LIST_DIR)
|
||||
if(CPM_VERSION VERSION_LESS CURRENT_CPM_VERSION)
|
||||
message(AUTHOR_WARNING "${CPM_INDENT} \
|
||||
message(
|
||||
AUTHOR_WARNING
|
||||
"${CPM_INDENT} \
|
||||
A dependency is using a more recent CPM version (${CURRENT_CPM_VERSION}) than the current project (${CPM_VERSION}). \
|
||||
It is recommended to upgrade CPM to the most recent version. \
|
||||
See https://github.com/TheLartians/CPM.cmake for more information."
|
||||
@@ -42,7 +44,11 @@ See https://github.com/TheLartians/CPM.cmake for more information."
|
||||
return()
|
||||
endif()
|
||||
|
||||
get_property(CPM_INITIALIZED GLOBAL "" PROPERTY CPM_INITIALIZED SET)
|
||||
get_property(
|
||||
CPM_INITIALIZED GLOBAL ""
|
||||
PROPERTY CPM_INITIALIZED
|
||||
SET
|
||||
)
|
||||
if(CPM_INITIALIZED)
|
||||
return()
|
||||
endif()
|
||||
@@ -50,18 +56,44 @@ endif()
|
||||
|
||||
set_property(GLOBAL PROPERTY CPM_INITIALIZED true)
|
||||
|
||||
option(CPM_USE_LOCAL_PACKAGES "Always try to use `find_package` to get dependencies" $ENV{CPM_USE_LOCAL_PACKAGES})
|
||||
option(CPM_LOCAL_PACKAGES_ONLY "Only use `find_package` to get dependencies" $ENV{CPM_LOCAL_PACKAGES_ONLY})
|
||||
option(CPM_USE_LOCAL_PACKAGES "Always try to use `find_package` to get dependencies"
|
||||
$ENV{CPM_USE_LOCAL_PACKAGES}
|
||||
)
|
||||
option(CPM_LOCAL_PACKAGES_ONLY "Only use `find_package` to get dependencies"
|
||||
$ENV{CPM_LOCAL_PACKAGES_ONLY}
|
||||
)
|
||||
option(CPM_DOWNLOAD_ALL "Always download dependencies from source" $ENV{CPM_DOWNLOAD_ALL})
|
||||
option(CPM_DONT_UPDATE_MODULE_PATH "Don't update the module path to allow using find_package" $ENV{CPM_DONT_UPDATE_MODULE_PATH})
|
||||
option(CPM_DONT_CREATE_PACKAGE_LOCK "Don't create a package lock file in the binary path" $ENV{CPM_DONT_CREATE_PACKAGE_LOCK})
|
||||
option(CPM_INCLUDE_ALL_IN_PACKAGE_LOCK "Add all packages added through CPM.cmake to the package lock" $ENV{CPM_INCLUDE_ALL_IN_PACKAGE_LOCK})
|
||||
option(CPM_DONT_UPDATE_MODULE_PATH "Don't update the module path to allow using find_package"
|
||||
$ENV{CPM_DONT_UPDATE_MODULE_PATH}
|
||||
)
|
||||
option(CPM_DONT_CREATE_PACKAGE_LOCK "Don't create a package lock file in the binary path"
|
||||
$ENV{CPM_DONT_CREATE_PACKAGE_LOCK}
|
||||
)
|
||||
option(CPM_INCLUDE_ALL_IN_PACKAGE_LOCK
|
||||
"Add all packages added through CPM.cmake to the package lock"
|
||||
$ENV{CPM_INCLUDE_ALL_IN_PACKAGE_LOCK}
|
||||
)
|
||||
|
||||
set(CPM_VERSION ${CURRENT_CPM_VERSION} CACHE INTERNAL "")
|
||||
set(CPM_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "")
|
||||
set(CPM_FILE ${CMAKE_CURRENT_LIST_FILE} CACHE INTERNAL "")
|
||||
set(CPM_PACKAGES "" CACHE INTERNAL "")
|
||||
set(CPM_DRY_RUN OFF CACHE INTERNAL "Don't download or configure dependencies (for testing)")
|
||||
set(CPM_VERSION
|
||||
${CURRENT_CPM_VERSION}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
set(CPM_DIRECTORY
|
||||
${CMAKE_CURRENT_LIST_DIR}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
set(CPM_FILE
|
||||
${CMAKE_CURRENT_LIST_FILE}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
set(CPM_PACKAGES
|
||||
""
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
set(CPM_DRY_RUN
|
||||
OFF
|
||||
CACHE INTERNAL "Don't download or configure dependencies (for testing)"
|
||||
)
|
||||
|
||||
if(DEFINED ENV{CPM_SOURCE_CACHE})
|
||||
set(CPM_SOURCE_CACHE_DEFAULT $ENV{CPM_SOURCE_CACHE})
|
||||
@@ -69,20 +101,31 @@ else()
|
||||
set(CPM_SOURCE_CACHE_DEFAULT OFF)
|
||||
endif()
|
||||
|
||||
set(CPM_SOURCE_CACHE ${CPM_SOURCE_CACHE_DEFAULT} CACHE PATH "Directory to download CPM dependencies")
|
||||
set(CPM_SOURCE_CACHE
|
||||
${CPM_SOURCE_CACHE_DEFAULT}
|
||||
CACHE PATH "Directory to download CPM dependencies"
|
||||
)
|
||||
|
||||
if(NOT CPM_DONT_UPDATE_MODULE_PATH)
|
||||
set(CPM_MODULE_PATH "${CMAKE_BINARY_DIR}/CPM_modules" CACHE INTERNAL "")
|
||||
set(CPM_MODULE_PATH
|
||||
"${CMAKE_BINARY_DIR}/CPM_modules"
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
# remove old modules
|
||||
FILE(REMOVE_RECURSE ${CPM_MODULE_PATH})
|
||||
file(REMOVE_RECURSE ${CPM_MODULE_PATH})
|
||||
file(MAKE_DIRECTORY ${CPM_MODULE_PATH})
|
||||
# locally added CPM modules should override global packages
|
||||
set(CMAKE_MODULE_PATH "${CPM_MODULE_PATH};${CMAKE_MODULE_PATH}")
|
||||
endif()
|
||||
|
||||
if(NOT CPM_DONT_CREATE_PACKAGE_LOCK)
|
||||
set(CPM_PACKAGE_LOCK_FILE "${CMAKE_BINARY_DIR}/cpm-package-lock.cmake" CACHE INTERNAL "")
|
||||
file(WRITE ${CPM_PACKAGE_LOCK_FILE} "# CPM Package Lock\n# This file should be committed to version control\n\n")
|
||||
set(CPM_PACKAGE_LOCK_FILE
|
||||
"${CMAKE_BINARY_DIR}/cpm-package-lock.cmake"
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
file(WRITE ${CPM_PACKAGE_LOCK_FILE}
|
||||
"# CPM Package Lock\n# This file should be committed to version control\n\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
include(FetchContent)
|
||||
@@ -99,29 +142,32 @@ function(cpm_find_package NAME VERSION)
|
||||
if(${CPM_ARGS_NAME}_FOUND)
|
||||
message(STATUS "${CPM_INDENT} using local package ${CPM_ARGS_NAME}@${VERSION}")
|
||||
CPMRegisterPackage(${CPM_ARGS_NAME} "${VERSION}")
|
||||
set(CPM_PACKAGE_FOUND YES PARENT_SCOPE)
|
||||
set(CPM_PACKAGE_FOUND
|
||||
YES
|
||||
PARENT_SCOPE
|
||||
)
|
||||
else()
|
||||
set(CPM_PACKAGE_FOUND NO PARENT_SCOPE)
|
||||
set(CPM_PACKAGE_FOUND
|
||||
NO
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Create a custom FindXXX.cmake module for a CPM package
|
||||
# This prevents `find_package(NAME)` from finding the system library
|
||||
function(CPMCreateModuleFile Name)
|
||||
# Create a custom FindXXX.cmake module for a CPM package This prevents `find_package(NAME)` from
|
||||
# finding the system library
|
||||
function(cpm_create_module_file Name)
|
||||
if(NOT CPM_DONT_UPDATE_MODULE_PATH)
|
||||
# erase any previous modules
|
||||
FILE(WRITE ${CPM_MODULE_PATH}/Find${Name}.cmake "include(${CPM_FILE})\n${ARGN}\nset(${Name}_FOUND TRUE)")
|
||||
file(WRITE ${CPM_MODULE_PATH}/Find${Name}.cmake
|
||||
"include(${CPM_FILE})\n${ARGN}\nset(${Name}_FOUND TRUE)"
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Find a package locally or fallback to CPMAddPackage
|
||||
function(CPMFindPackage)
|
||||
set(oneValueArgs
|
||||
NAME
|
||||
VERSION
|
||||
GIT_TAG
|
||||
FIND_PACKAGE_ARGUMENTS
|
||||
)
|
||||
set(oneValueArgs NAME VERSION GIT_TAG FIND_PACKAGE_ARGUMENTS)
|
||||
|
||||
cmake_parse_arguments(CPM_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
||||
|
||||
@@ -137,7 +183,7 @@ function(CPMFindPackage)
|
||||
return()
|
||||
endif()
|
||||
|
||||
CPMCheckIfPackageAlreadyAdded(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
cpm_check_if_package_already_added(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
if(CPM_PACKAGE_ALREADY_ADDED)
|
||||
cpm_export_variables(${CPM_ARGS_NAME})
|
||||
return()
|
||||
@@ -153,26 +199,38 @@ function(CPMFindPackage)
|
||||
endfunction()
|
||||
|
||||
# checks if a package has been added before
|
||||
function(CPMCheckIfPackageAlreadyAdded CPM_ARGS_NAME CPM_ARGS_VERSION CPM_ARGS_OPTIONS)
|
||||
function(cpm_check_if_package_already_added CPM_ARGS_NAME CPM_ARGS_VERSION CPM_ARGS_OPTIONS)
|
||||
if("${CPM_ARGS_NAME}" IN_LIST CPM_PACKAGES)
|
||||
CPMGetPackageVersion(${CPM_ARGS_NAME} CPM_PACKAGE_VERSION)
|
||||
if("${CPM_PACKAGE_VERSION}" VERSION_LESS "${CPM_ARGS_VERSION}")
|
||||
message(WARNING "${CPM_INDENT} requires a newer version of ${CPM_ARGS_NAME} (${CPM_ARGS_VERSION}) than currently included (${CPM_PACKAGE_VERSION}).")
|
||||
message(
|
||||
WARNING
|
||||
"${CPM_INDENT} requires a newer version of ${CPM_ARGS_NAME} (${CPM_ARGS_VERSION}) than currently included (${CPM_PACKAGE_VERSION})."
|
||||
)
|
||||
endif()
|
||||
if(CPM_ARGS_OPTIONS)
|
||||
foreach(OPTION ${CPM_ARGS_OPTIONS})
|
||||
cpm_parse_option(${OPTION})
|
||||
if(NOT "${${OPTION_KEY}}" STREQUAL "${OPTION_VALUE}")
|
||||
message(WARNING "${CPM_INDENT} ignoring package option for ${CPM_ARGS_NAME}: ${OPTION_KEY} = ${OPTION_VALUE} (${${OPTION_KEY}})")
|
||||
message(
|
||||
WARNING
|
||||
"${CPM_INDENT} ignoring package option for ${CPM_ARGS_NAME}: ${OPTION_KEY} = ${OPTION_VALUE} (${${OPTION_KEY}})"
|
||||
)
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
cpm_get_fetch_properties(${CPM_ARGS_NAME})
|
||||
SET(${CPM_ARGS_NAME}_ADDED NO)
|
||||
SET(CPM_PACKAGE_ALREADY_ADDED YES PARENT_SCOPE)
|
||||
set(${CPM_ARGS_NAME}_ADDED NO)
|
||||
set(CPM_PACKAGE_ALREADY_ADDED
|
||||
YES
|
||||
PARENT_SCOPE
|
||||
)
|
||||
cpm_export_variables(${CPM_ARGS_NAME})
|
||||
else()
|
||||
SET(CPM_PACKAGE_ALREADY_ADDED NO PARENT_SCOPE)
|
||||
set(CPM_PACKAGE_ALREADY_ADDED
|
||||
NO
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -195,9 +253,7 @@ function(CPMAddPackage)
|
||||
GIT_SHALLOW
|
||||
)
|
||||
|
||||
set(multiValueArgs
|
||||
OPTIONS
|
||||
)
|
||||
set(multiValueArgs OPTIONS)
|
||||
|
||||
cmake_parse_arguments(CPM_ARGS "" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
||||
|
||||
@@ -239,7 +295,7 @@ function(CPMAddPackage)
|
||||
endif()
|
||||
|
||||
# Check if package has been added before
|
||||
CPMCheckIfPackageAlreadyAdded(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
cpm_check_if_package_already_added(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
if(CPM_PACKAGE_ALREADY_ADDED)
|
||||
cpm_export_variables(${CPM_ARGS_NAME})
|
||||
return()
|
||||
@@ -266,7 +322,7 @@ function(CPMAddPackage)
|
||||
CPMAddPackage(${declaration})
|
||||
cpm_export_variables(${CPM_ARGS_NAME})
|
||||
# checking again to ensure version and option compatibility
|
||||
CPMCheckIfPackageAlreadyAdded(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
cpm_check_if_package_already_added(${CPM_ARGS_NAME} "${CPM_ARGS_VERSION}" "${CPM_ARGS_OPTIONS}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
@@ -279,7 +335,10 @@ function(CPMAddPackage)
|
||||
endif()
|
||||
|
||||
if(CPM_LOCAL_PACKAGES_ONLY)
|
||||
message(SEND_ERROR "CPM: ${CPM_ARGS_NAME} not found via find_package(${CPM_ARGS_NAME} ${CPM_ARGS_VERSION})")
|
||||
message(
|
||||
SEND_ERROR
|
||||
"CPM: ${CPM_ARGS_NAME} not found via find_package(${CPM_ARGS_NAME} ${CPM_ARGS_VERSION})"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -288,7 +347,10 @@ function(CPMAddPackage)
|
||||
if(CPM_ARGS_OPTIONS)
|
||||
foreach(OPTION ${CPM_ARGS_OPTIONS})
|
||||
cpm_parse_option(${OPTION})
|
||||
set(${OPTION_KEY} ${OPTION_VALUE} CACHE INTERNAL "")
|
||||
set(${OPTION_KEY}
|
||||
${OPTION_VALUE}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
@@ -316,8 +378,8 @@ function(CPMAddPackage)
|
||||
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS DOWNLOAD_COMMAND "${CMAKE_COMMAND}")
|
||||
set(PACKAGE_INFO "${download_directory}")
|
||||
else()
|
||||
# Enable shallow clone when GIT_TAG is not a commit hash.
|
||||
# Our guess may not be accurate, but it should guarantee no commit hash get mis-detected.
|
||||
# Enable shallow clone when GIT_TAG is not a commit hash. Our guess may not be accurate, but
|
||||
# it should guarantee no commit hash get mis-detected.
|
||||
if(NOT DEFINED CPM_ARGS_GIT_SHALLOW)
|
||||
cpm_is_git_tag_commit_hash("${CPM_ARGS_GIT_TAG}" IS_HASH)
|
||||
if(NOT ${IS_HASH})
|
||||
@@ -331,7 +393,7 @@ function(CPMAddPackage)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
CPMCreateModuleFile(${CPM_ARGS_NAME} "CPMAddPackage(${ARGN})")
|
||||
cpm_create_module_file(${CPM_ARGS_NAME} "CPMAddPackage(${ARGN})")
|
||||
|
||||
if(CPM_PACKAGE_LOCK_ENABLED)
|
||||
if((CPM_ARGS_VERSION AND NOT CPM_ARGS_SOURCE_DIR) OR CPM_INCLUDE_ALL_IN_PACKAGE_LOCK)
|
||||
@@ -343,36 +405,43 @@ function(CPMAddPackage)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
cpm_declare_fetch("${CPM_ARGS_NAME}" "${CPM_ARGS_VERSION}" "${PACKAGE_INFO}" "${CPM_ARGS_UNPARSED_ARGUMENTS}")
|
||||
cpm_declare_fetch(
|
||||
"${CPM_ARGS_NAME}" "${CPM_ARGS_VERSION}" "${PACKAGE_INFO}" "${CPM_ARGS_UNPARSED_ARGUMENTS}"
|
||||
)
|
||||
cpm_fetch_package("${CPM_ARGS_NAME}" "${DOWNLOAD_ONLY}")
|
||||
cpm_get_fetch_properties("${CPM_ARGS_NAME}")
|
||||
|
||||
SET(${CPM_ARGS_NAME}_ADDED YES)
|
||||
set(${CPM_ARGS_NAME}_ADDED YES)
|
||||
cpm_export_variables("${CPM_ARGS_NAME}")
|
||||
endfunction()
|
||||
|
||||
# Fetch a previously declared package
|
||||
macro(CPMGetPackage Name)
|
||||
if(DEFINED "CPM_DECLARATION_${Name}")
|
||||
CPMAddPackage(
|
||||
NAME ${Name}
|
||||
)
|
||||
CPMAddPackage(NAME ${Name})
|
||||
else()
|
||||
message(SEND_ERROR "Cannot retrieve package ${Name}: no declaration available")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# export variables available to the caller to the parent scope
|
||||
# expects ${CPM_ARGS_NAME} to be set
|
||||
# export variables available to the caller to the parent scope expects ${CPM_ARGS_NAME} to be set
|
||||
macro(cpm_export_variables name)
|
||||
SET(${name}_SOURCE_DIR "${${name}_SOURCE_DIR}" PARENT_SCOPE)
|
||||
SET(${name}_BINARY_DIR "${${name}_BINARY_DIR}" PARENT_SCOPE)
|
||||
SET(${name}_ADDED "${${name}_ADDED}" PARENT_SCOPE)
|
||||
set(${name}_SOURCE_DIR
|
||||
"${${name}_SOURCE_DIR}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
set(${name}_BINARY_DIR
|
||||
"${${name}_BINARY_DIR}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
set(${name}_ADDED
|
||||
"${${name}_ADDED}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# declares a package, so that any call to CPMAddPackage for the
|
||||
# package name will use these arguments instead.
|
||||
# Previous declarations will not be overriden.
|
||||
# declares a package, so that any call to CPMAddPackage for the package name will use these
|
||||
# arguments instead. Previous declarations will not be overriden.
|
||||
macro(CPMDeclarePackage Name)
|
||||
if(NOT DEFINED "CPM_DECLARATION_${Name}")
|
||||
set("CPM_DECLARATION_${Name}" "${ARGN}")
|
||||
@@ -387,12 +456,14 @@ endfunction()
|
||||
|
||||
function(cpm_add_comment_to_package_lock Name)
|
||||
if(NOT CPM_DONT_CREATE_PACKAGE_LOCK)
|
||||
file(APPEND ${CPM_PACKAGE_LOCK_FILE} "# ${Name} (unversioned)\n# CPMDeclarePackage(${Name} \"${ARGN}\")\n")
|
||||
file(APPEND ${CPM_PACKAGE_LOCK_FILE}
|
||||
"# ${Name} (unversioned)\n# CPMDeclarePackage(${Name} \"${ARGN}\")\n"
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# includes the package lock file if it exists and creates a target
|
||||
# `cpm-write-package-lock` to update it
|
||||
# includes the package lock file if it exists and creates a target `cpm-write-package-lock` to
|
||||
# update it
|
||||
macro(CPMUsePackageLock file)
|
||||
if(NOT CPM_DONT_CREATE_PACKAGE_LOCK)
|
||||
get_filename_component(CPM_ABSOLUTE_PACKAGE_LOCK_PATH ${file} ABSOLUTE)
|
||||
@@ -400,7 +471,10 @@ macro(CPMUsePackageLock file)
|
||||
include(${CPM_ABSOLUTE_PACKAGE_LOCK_PATH})
|
||||
endif()
|
||||
if(NOT TARGET cpm-update-package-lock)
|
||||
add_custom_target(cpm-update-package-lock COMMAND ${CMAKE_COMMAND} -E copy ${CPM_PACKAGE_LOCK_FILE} ${CPM_ABSOLUTE_PACKAGE_LOCK_PATH})
|
||||
add_custom_target(
|
||||
cpm-update-package-lock COMMAND ${CMAKE_COMMAND} -E copy ${CPM_PACKAGE_LOCK_FILE}
|
||||
${CPM_ABSOLUTE_PACKAGE_LOCK_PATH}
|
||||
)
|
||||
endif()
|
||||
set(CPM_PACKAGE_LOCK_ENABLED true)
|
||||
endif()
|
||||
@@ -409,13 +483,22 @@ endmacro()
|
||||
# registers a package that has been added to CPM
|
||||
function(CPMRegisterPackage PACKAGE VERSION)
|
||||
list(APPEND CPM_PACKAGES ${PACKAGE})
|
||||
set(CPM_PACKAGES ${CPM_PACKAGES} CACHE INTERNAL "")
|
||||
set("CPM_PACKAGE_${PACKAGE}_VERSION" ${VERSION} CACHE INTERNAL "")
|
||||
set(CPM_PACKAGES
|
||||
${CPM_PACKAGES}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
set("CPM_PACKAGE_${PACKAGE}_VERSION"
|
||||
${VERSION}
|
||||
CACHE INTERNAL ""
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# retrieve the current version of the package to ${OUTPUT}
|
||||
function(CPMGetPackageVersion PACKAGE OUTPUT)
|
||||
set(${OUTPUT} "${CPM_PACKAGE_${PACKAGE}_VERSION}" PARENT_SCOPE)
|
||||
set(${OUTPUT}
|
||||
"${CPM_PACKAGE_${PACKAGE}_VERSION}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# declares a package in FetchContent_Declare
|
||||
@@ -427,9 +510,7 @@ function (cpm_declare_fetch PACKAGE VERSION INFO)
|
||||
return()
|
||||
endif()
|
||||
|
||||
FetchContent_Declare(${PACKAGE}
|
||||
${ARGN}
|
||||
)
|
||||
FetchContent_Declare(${PACKAGE} ${ARGN})
|
||||
endfunction()
|
||||
|
||||
# returns properties for a package previously defined by cpm_declare_fetch
|
||||
@@ -439,8 +520,14 @@ function (cpm_get_fetch_properties PACKAGE)
|
||||
endif()
|
||||
FetchContent_GetProperties(${PACKAGE})
|
||||
string(TOLOWER ${PACKAGE} lpackage)
|
||||
SET(${PACKAGE}_SOURCE_DIR "${${lpackage}_SOURCE_DIR}" PARENT_SCOPE)
|
||||
SET(${PACKAGE}_BINARY_DIR "${${lpackage}_BINARY_DIR}" PARENT_SCOPE)
|
||||
set(${PACKAGE}_SOURCE_DIR
|
||||
"${${lpackage}_SOURCE_DIR}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
set(${PACKAGE}_BINARY_DIR
|
||||
"${${lpackage}_BINARY_DIR}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# downloads a previously declared package via FetchContent
|
||||
@@ -475,8 +562,14 @@ function(cpm_parse_option OPTION)
|
||||
math(EXPR OPTION_KEY_LENGTH "${OPTION_KEY_LENGTH}+1")
|
||||
string(SUBSTRING ${OPTION} "${OPTION_KEY_LENGTH}" "-1" OPTION_VALUE)
|
||||
endif()
|
||||
set(OPTION_KEY "${OPTION_KEY}" PARENT_SCOPE)
|
||||
set(OPTION_VALUE "${OPTION_VALUE}" PARENT_SCOPE)
|
||||
set(OPTION_KEY
|
||||
"${OPTION_KEY}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
set(OPTION_VALUE
|
||||
"${OPTION_VALUE}"
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
# guesses the package version from a git tag
|
||||
@@ -484,10 +577,16 @@ function(cpm_get_version_from_git_tag GIT_TAG RESULT)
|
||||
string(LENGTH ${GIT_TAG} length)
|
||||
if(length EQUAL 40)
|
||||
# GIT_TAG is probably a git hash
|
||||
SET(${RESULT} 0 PARENT_SCOPE)
|
||||
set(${RESULT}
|
||||
0
|
||||
PARENT_SCOPE
|
||||
)
|
||||
else()
|
||||
string(REGEX MATCH "v?([0123456789.]*).*" _ ${GIT_TAG})
|
||||
SET(${RESULT} ${CMAKE_MATCH_1} PARENT_SCOPE)
|
||||
set(${RESULT}
|
||||
${CMAKE_MATCH_1}
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -496,12 +595,21 @@ function(cpm_is_git_tag_commit_hash GIT_TAG RESULT)
|
||||
string(LENGTH "${GIT_TAG}" length)
|
||||
# full hash has 40 characters, and short hash has at least 7 characters.
|
||||
if(length LESS 7 OR length GREATER 40)
|
||||
SET(${RESULT} 0 PARENT_SCOPE)
|
||||
set(${RESULT}
|
||||
0
|
||||
PARENT_SCOPE
|
||||
)
|
||||
else()
|
||||
if(${GIT_TAG} MATCHES "^[a-fA-F0-9]+$")
|
||||
SET(${RESULT} 1 PARENT_SCOPE)
|
||||
set(${RESULT}
|
||||
1
|
||||
PARENT_SCOPE
|
||||
)
|
||||
else()
|
||||
SET(${RESULT} 0 PARENT_SCOPE)
|
||||
set(${RESULT}
|
||||
0
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
set(CPM_DOWNLOAD_VERSION 0.27.2-development-version)
|
||||
set(CPM_DOWNLOAD_VERSION 1.0.0-development-version)
|
||||
|
||||
if(CPM_SOURCE_CACHE)
|
||||
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
function(ASSERT_EQUAL)
|
||||
if(NOT ARGC EQUAL 2)
|
||||
message(FATAL_ERROR "assertion failed: invalid argument count: ${ARGC}")
|
||||
|
||||
@@ -15,28 +15,20 @@ CPMAddPackage(
|
||||
GIT_TAG asio-1-16-1 # asio uses non-standard version tag, we must specify GIT_TAG
|
||||
)
|
||||
|
||||
# ASIO doesn't use CMake, we have to configure it manually.
|
||||
# Extra notes for using on Windows:
|
||||
# 1) If _WIN32_WINNT is not set, ASIO assumes _WIN32_WINNT=0x0501, i.e. Windows XP target,
|
||||
# which is definitely not the platform which most users target.
|
||||
# ASIO doesn't use CMake, we have to configure it manually. Extra notes for using on Windows:
|
||||
#
|
||||
# 1) If _WIN32_WINNT is not set, ASIO assumes _WIN32_WINNT=0x0501, i.e. Windows XP target, which is
|
||||
# definitely not the platform which most users target.
|
||||
#
|
||||
# 2) WIN32_LEAN_AND_MEAN is defined to make Winsock2 work.
|
||||
if(asio_ADDED)
|
||||
add_library(asio INTERFACE)
|
||||
|
||||
target_include_directories(asio
|
||||
INTERFACE ${asio_SOURCE_DIR}/asio/include
|
||||
)
|
||||
target_include_directories(asio INTERFACE ${asio_SOURCE_DIR}/asio/include)
|
||||
|
||||
target_compile_definitions(asio
|
||||
INTERFACE
|
||||
ASIO_STANDALONE
|
||||
ASIO_NO_DEPRECATED
|
||||
)
|
||||
target_compile_definitions(asio INTERFACE ASIO_STANDALONE ASIO_NO_DEPRECATED)
|
||||
|
||||
target_link_libraries(asio
|
||||
INTERFACE
|
||||
Threads::Threads
|
||||
)
|
||||
target_link_libraries(asio INTERFACE Threads::Threads)
|
||||
|
||||
if(WIN32)
|
||||
# macro see @ https://stackoverflow.com/a/40217291/1746503
|
||||
@@ -65,11 +57,7 @@ if(asio_ADDED)
|
||||
|
||||
message(STATUS "Set _WIN32_WINNET=${_WIN32_WINNT}")
|
||||
|
||||
target_compile_definitions(asio
|
||||
INTERFACE
|
||||
_WIN32_WINNT=${_WIN32_WINNT}
|
||||
WIN32_LEAN_AND_MEAN
|
||||
)
|
||||
target_compile_definitions(asio INTERFACE _WIN32_WINNT=${_WIN32_WINNT} WIN32_LEAN_AND_MEAN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -20,42 +20,28 @@
|
||||
|
||||
using asio::ip::tcp;
|
||||
|
||||
class session
|
||||
: public std::enable_shared_from_this<session>
|
||||
{
|
||||
class session : public std::enable_shared_from_this<session> {
|
||||
public:
|
||||
session(tcp::socket socket)
|
||||
: socket_(std::move(socket))
|
||||
{
|
||||
}
|
||||
session(tcp::socket socket) : socket_(std::move(socket)) {}
|
||||
|
||||
void start()
|
||||
{
|
||||
do_read();
|
||||
}
|
||||
void start() { do_read(); }
|
||||
|
||||
private:
|
||||
void do_read()
|
||||
{
|
||||
void do_read() {
|
||||
auto self(shared_from_this());
|
||||
socket_.async_read_some(asio::buffer(data_, max_length),
|
||||
[this, self](std::error_code ec, std::size_t length)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
[this, self](std::error_code ec, std::size_t length) {
|
||||
if (!ec) {
|
||||
do_write(length);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void do_write(std::size_t length)
|
||||
{
|
||||
void do_write(std::size_t length) {
|
||||
auto self(shared_from_this());
|
||||
asio::async_write(socket_, asio::buffer(data_, length),
|
||||
[this, self](std::error_code ec, std::size_t /*length*/)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
[this, self](std::error_code ec, std::size_t /*length*/) {
|
||||
if (!ec) {
|
||||
do_read();
|
||||
}
|
||||
});
|
||||
@@ -66,23 +52,17 @@ private:
|
||||
char data_[max_length];
|
||||
};
|
||||
|
||||
class server
|
||||
{
|
||||
class server {
|
||||
public:
|
||||
server(asio::io_context& io_context, short port)
|
||||
: acceptor_(io_context, tcp::endpoint(tcp::v4(), port))
|
||||
{
|
||||
: acceptor_(io_context, tcp::endpoint(tcp::v4(), port)) {
|
||||
do_accept();
|
||||
}
|
||||
|
||||
private:
|
||||
void do_accept()
|
||||
{
|
||||
acceptor_.async_accept(
|
||||
[this](std::error_code ec, tcp::socket socket)
|
||||
{
|
||||
if (!ec)
|
||||
{
|
||||
void do_accept() {
|
||||
acceptor_.async_accept([this](std::error_code ec, tcp::socket socket) {
|
||||
if (!ec) {
|
||||
std::make_shared<session>(std::move(socket))->start();
|
||||
}
|
||||
|
||||
@@ -93,12 +73,9 @@ private:
|
||||
tcp::acceptor acceptor_;
|
||||
};
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
try
|
||||
{
|
||||
if (argc != 2)
|
||||
{
|
||||
int main(int argc, char* argv[]) {
|
||||
try {
|
||||
if (argc != 2) {
|
||||
std::cerr << "Usage: async_tcp_echo_server <port>\n";
|
||||
return 1;
|
||||
}
|
||||
@@ -108,9 +85,7 @@ int main(int argc, char* argv[])
|
||||
server s(io_context, std::atoi(argv[1]));
|
||||
|
||||
io_context.run();
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
} catch (std::exception& e) {
|
||||
std::cerr << "Exception: " << e.what() << "\n";
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,7 @@ CPMAddPackage(
|
||||
NAME benchmark
|
||||
GITHUB_REPOSITORY google/benchmark
|
||||
VERSION 1.5.0
|
||||
OPTIONS
|
||||
"BENCHMARK_ENABLE_TESTING Off"
|
||||
OPTIONS "BENCHMARK_ENABLE_TESTING Off"
|
||||
)
|
||||
|
||||
if(benchmark_ADDED)
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <random>
|
||||
|
||||
#include <fibonacci.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <random>
|
||||
#include <vector>
|
||||
|
||||
std::vector<unsigned> createTestNumbers() {
|
||||
std::vector<unsigned> v;
|
||||
|
||||
@@ -8,17 +8,13 @@
|
||||
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <iostream>
|
||||
|
||||
void print(const boost::system::error_code& /*e*/)
|
||||
{
|
||||
std::cout << "Hello, world!" << std::endl;
|
||||
}
|
||||
void print(const boost::system::error_code& /*e*/) { std::cout << "Hello, world!" << std::endl; }
|
||||
|
||||
int main()
|
||||
{
|
||||
int main() {
|
||||
boost::asio::io_service io;
|
||||
|
||||
boost::asio::deadline_timer t(io, boost::posix_time::seconds(1));
|
||||
|
||||
@@ -26,5 +26,5 @@ set_target_properties(CPMExampleCatch2 PROPERTIES CXX_STANDARD 17)
|
||||
|
||||
# ---- Enable testing ----
|
||||
|
||||
ENABLE_TESTING()
|
||||
ADD_TEST(CPMExampleCatch2 CPMExampleCatch2)
|
||||
enable_testing()
|
||||
add_test(CPMExampleCatch2 CPMExampleCatch2)
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include <fibonacci.h>
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
TEST_CASE("fibonacci") {
|
||||
REQUIRE(fibonacci(0) == 0);
|
||||
REQUIRE(fibonacci(1) == 1);
|
||||
|
||||
@@ -10,9 +10,7 @@ CPMAddPackage(
|
||||
NAME cereal
|
||||
VERSION 1.2.2
|
||||
GITHUB_REPOSITORY USCiLab/cereal
|
||||
OPTIONS
|
||||
"SKIP_PORTABILITY_TEST ON"
|
||||
"JUST_INSTALL_CEREAL ON"
|
||||
OPTIONS "SKIP_PORTABILITY_TEST ON" "JUST_INSTALL_CEREAL ON"
|
||||
)
|
||||
|
||||
# ---- Create binary ----
|
||||
|
||||
@@ -1,28 +1,20 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
|
||||
#include <cereal/cereal.hpp>
|
||||
#include <cereal/archives/json.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <cereal/cereal.hpp>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
struct player_data
|
||||
{
|
||||
struct player_data {
|
||||
int id{-1};
|
||||
std::string name{};
|
||||
};
|
||||
|
||||
template<typename Archive>
|
||||
void serialize(Archive& archive, player_data const &data)
|
||||
{
|
||||
archive(
|
||||
cereal::make_nvp("id", data.id),
|
||||
cereal::make_nvp("name", data.name)
|
||||
);
|
||||
template <typename Archive> void serialize(Archive &archive, player_data const &data) {
|
||||
archive(cereal::make_nvp("id", data.id), cereal::make_nvp("name", data.name));
|
||||
}
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
int main(int argc, char const *argv[]) {
|
||||
player_data player{3, "Gamer One"};
|
||||
std::ostringstream oss;
|
||||
cereal::JSONOutputArchive output(oss);
|
||||
|
||||
@@ -10,9 +10,7 @@ CPMAddPackage(
|
||||
NAME cxxopts
|
||||
GITHUB_REPOSITORY jarro2783/cxxopts
|
||||
VERSION 2.2.0
|
||||
OPTIONS
|
||||
"CXXOPTS_BUILD_EXAMPLES Off"
|
||||
"CXXOPTS_BUILD_TESTS Off"
|
||||
OPTIONS "CXXOPTS_BUILD_EXAMPLES Off" "CXXOPTS_BUILD_TESTS Off"
|
||||
)
|
||||
|
||||
# ---- Create binary ----
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
cxxopts::Options options("MyProgram", "One line description of MyProgram");
|
||||
options.add_options()
|
||||
("h,help", "Show help")
|
||||
("d,debug", "Enable debugging")
|
||||
("f,file", "File name", cxxopts::value<std::string>());
|
||||
options.add_options()("h,help", "Show help")("d,debug", "Enable debugging")(
|
||||
"f,file", "File name", cxxopts::value<std::string>());
|
||||
|
||||
auto result = options.parse(argc, argv);
|
||||
|
||||
|
||||
@@ -26,5 +26,5 @@ set_target_properties(CPMExampleDoctest PROPERTIES CXX_STANDARD 17)
|
||||
|
||||
# ---- Enable testing ----
|
||||
|
||||
ENABLE_TESTING()
|
||||
ADD_TEST(CPMExampleDoctest CPMExampleDoctest)
|
||||
enable_testing()
|
||||
add_test(CPMExampleDoctest CPMExampleDoctest)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include <entt/entt.hpp>
|
||||
#include <cstdint>
|
||||
#include <entt/entt.hpp>
|
||||
|
||||
struct position {
|
||||
float x;
|
||||
@@ -44,7 +44,9 @@ int main() {
|
||||
for (auto i = 0; i < 10; ++i) {
|
||||
auto entity = registry.create();
|
||||
registry.assign<position>(entity, i * 1.f, i * 1.f);
|
||||
if(i % 2 == 0) { registry.assign<velocity>(entity, i * .1f, i * .1f); }
|
||||
if (i % 2 == 0) {
|
||||
registry.assign<velocity>(entity, i * .1f, i * .1f);
|
||||
}
|
||||
}
|
||||
|
||||
update(dt, registry);
|
||||
|
||||
@@ -17,9 +17,7 @@ CPMAddPackage(
|
||||
GITHUB_REPOSITORY google/googletest
|
||||
GIT_TAG release-1.8.1
|
||||
VERSION 1.8.1
|
||||
OPTIONS
|
||||
"INSTALL_GTEST OFF"
|
||||
"gtest_force_shared_crt"
|
||||
OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt"
|
||||
)
|
||||
|
||||
# ---- Create binary ----
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <fibonacci.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(FibonacciTests, BasicChecks)
|
||||
{
|
||||
TEST(FibonacciTests, BasicChecks) {
|
||||
ASSERT_TRUE(fibonacci(0) == 0);
|
||||
ASSERT_TRUE(fibonacci(1) == 1);
|
||||
ASSERT_TRUE(fibonacci(2) == 1);
|
||||
|
||||
@@ -1,23 +1,15 @@
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <iostream>
|
||||
#include <iomanip>
|
||||
#include <iostream>
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
int main() {
|
||||
|
||||
nlohmann::json json = {
|
||||
{"pi", 3.141},
|
||||
nlohmann::json json = {{"pi", 3.141},
|
||||
{"happy", true},
|
||||
{"name", "Niels"},
|
||||
{"nothing", nullptr},
|
||||
{"answer", {
|
||||
{"everything", 42}
|
||||
}},
|
||||
{"answer", {{"everything", 42}}},
|
||||
{"list", {1, 0, 2}},
|
||||
{"object", {
|
||||
{"currency", "USD"},
|
||||
{"value", 42.99}
|
||||
}}
|
||||
};
|
||||
{"object", {{"currency", "USD"}, {"value", 42.99}}}};
|
||||
|
||||
std::cout << "declared JSON object: " << std::setw(2) << json << std::endl;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "linenoise.h"
|
||||
|
||||
#include "linenoise.h"
|
||||
|
||||
void completion(const char *buf, linenoiseCompletions *lc) {
|
||||
if (buf[0] == 'h') {
|
||||
|
||||
@@ -18,21 +18,18 @@
|
||||
// vector all_of is_six: false
|
||||
// vector none_of is_six: false
|
||||
|
||||
#include <iostream>
|
||||
#include <range/v3/algorithm/all_of.hpp>
|
||||
#include <range/v3/algorithm/any_of.hpp>
|
||||
#include <range/v3/algorithm/for_each.hpp>
|
||||
#include <range/v3/algorithm/none_of.hpp>
|
||||
#include <range/v3/view/all.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
using std::cout;
|
||||
|
||||
auto is_six = [](int i) { return i == 6; };
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
int main() {
|
||||
std::vector<int> v{6, 2, 3, 4, 5, 6};
|
||||
cout << std::boolalpha;
|
||||
cout << "vector: " << ranges::view::all(v) << '\n';
|
||||
|
||||
@@ -23,4 +23,3 @@ endif()
|
||||
add_executable(CPMSimpleMatchExample "main.cpp")
|
||||
set_target_properties(CPMSimpleMatchExample PROPERTIES CXX_STANDARD 17)
|
||||
target_link_libraries(CPMSimpleMatchExample simple_match)
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <simple_match/simple_match.hpp>
|
||||
|
||||
#include <iostream>
|
||||
#include <simple_match/simple_match.hpp>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
using namespace simple_match;
|
||||
@@ -12,7 +11,9 @@ int main(int argc, char ** argv){
|
||||
while (true) {
|
||||
std::cout << "> ";
|
||||
std::getline(std::cin, input);
|
||||
if (input == "quit") { break; }
|
||||
if (input == "quit") {
|
||||
break;
|
||||
}
|
||||
int x;
|
||||
try {
|
||||
x = std::stoi(input);
|
||||
@@ -21,13 +22,12 @@ int main(int argc, char ** argv){
|
||||
continue;
|
||||
}
|
||||
|
||||
match(x,
|
||||
1, []() {std::cout << "The answer is one\n"; },
|
||||
2, []() {std::cout << "The answer is two\n"; },
|
||||
_x < 10, [](auto&& a) {std::cout << "The answer " << a << " is less than 10\n"; },
|
||||
10 < _x < 20, [](auto&& a) {std::cout << "The answer " << a << " is between 10 and 20 exclusive\n"; },
|
||||
_, []() {std::cout << "Did not match\n"; }
|
||||
);
|
||||
match(
|
||||
x, 1, []() { std::cout << "The answer is one\n"; }, 2,
|
||||
[]() { std::cout << "The answer is two\n"; }, _x < 10,
|
||||
[](auto&& a) { std::cout << "The answer " << a << " is less than 10\n"; }, 10 < _x < 20,
|
||||
[](auto&& a) { std::cout << "The answer " << a << " is between 10 and 20 exclusive\n"; }, _,
|
||||
[]() { std::cout << "Did not match\n"; });
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -16,17 +16,13 @@ CPMAddPackage(
|
||||
if(lua_ADDED)
|
||||
# lua has no CMakeLists, so we create our own target
|
||||
|
||||
FILE(GLOB lua_sources ${lua_SOURCE_DIR}/*.c)
|
||||
file(GLOB lua_sources ${lua_SOURCE_DIR}/*.c)
|
||||
list(REMOVE_ITEM lua_sources "${lua_SOURCE_DIR}/lua.c" "${lua_SOURCE_DIR}/luac.c")
|
||||
add_library(lua STATIC ${lua_sources})
|
||||
|
||||
target_include_directories(lua
|
||||
PUBLIC
|
||||
$<BUILD_INTERFACE:${lua_SOURCE_DIR}>
|
||||
)
|
||||
target_include_directories(lua PUBLIC $<BUILD_INTERFACE:${lua_SOURCE_DIR}>)
|
||||
endif()
|
||||
|
||||
|
||||
CPMAddPackage(
|
||||
NAME sol2
|
||||
URL https://github.com/ThePhD/sol2/archive/v3.0.2.zip
|
||||
@@ -45,4 +41,3 @@ endif()
|
||||
add_executable(CPMSol2Example "main.cpp")
|
||||
set_target_properties(CPMSol2Example PROPERTIES CXX_STANDARD 17)
|
||||
target_link_libraries(CPMSol2Example sol2)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include <sol/sol.hpp>
|
||||
#include <cassert>
|
||||
#include <sol/sol.hpp>
|
||||
|
||||
struct vars {
|
||||
int boop = 0;
|
||||
@@ -9,7 +9,8 @@ int main() {
|
||||
sol::state lua;
|
||||
lua.open_libraries(sol::lib::base);
|
||||
lua.new_usertype<vars>("vars", "boop", &vars::boop);
|
||||
lua.script("beep = vars.new()\n"
|
||||
lua.script(
|
||||
"beep = vars.new()\n"
|
||||
"beep.boop = 1\n"
|
||||
"print('beep boop')");
|
||||
assert(lua.get<vars>("beep").boop == 1);
|
||||
|
||||
@@ -13,10 +13,7 @@ CPMAddPackage(
|
||||
VERSION 0.6.3
|
||||
# 0.6.3 is not released yet, so use the most recent commit
|
||||
GIT_TAG 012269756149ae99745b6dafefd415843d7420bb
|
||||
OPTIONS
|
||||
"YAML_CPP_BUILD_TESTS Off"
|
||||
"YAML_CPP_BUILD_CONTRIB Off"
|
||||
"YAML_CPP_BUILD_TOOLS Off"
|
||||
OPTIONS "YAML_CPP_BUILD_TESTS Off" "YAML_CPP_BUILD_CONTRIB Off" "YAML_CPP_BUILD_TOOLS Off"
|
||||
)
|
||||
|
||||
# ---- Executable ----
|
||||
@@ -24,4 +21,3 @@ CPMAddPackage(
|
||||
add_executable(CPMYamlExample "main.cpp")
|
||||
set_target_properties(CPMYamlExample PROPERTIES CXX_STANDARD 17)
|
||||
target_link_libraries(CPMYamlExample yaml-cpp)
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include <yaml-cpp/yaml.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
|
||||
@@ -8,9 +8,8 @@ enable_testing()
|
||||
|
||||
foreach(test ${tests})
|
||||
message(STATUS "adding test: ${test}")
|
||||
add_test(
|
||||
NAME ${test}
|
||||
COMMAND ${CMAKE_COMMAND} -DCPM_PATH=${CMAKE_CURRENT_SOURCE_DIR}/../cmake -P "${test}"
|
||||
add_test(NAME ${test} COMMAND ${CMAKE_COMMAND} -DCPM_PATH=${CMAKE_CURRENT_SOURCE_DIR}/../cmake -P
|
||||
"${test}"
|
||||
)
|
||||
endforeach()
|
||||
|
||||
|
||||
12
test/style/CMakeLists.txt
Normal file
12
test/style/CMakeLists.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
|
||||
project(CPMStyleCheck)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/../../cmake/CPM.cmake)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME Format.cmake
|
||||
VERSION 1.6
|
||||
GITHUB_REPOSITORY TheLartians/Format.cmake
|
||||
OPTIONS "FORMAT_CHECK_CMAKE ON"
|
||||
)
|
||||
@@ -8,8 +8,8 @@ set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/remote_dependency)
|
||||
|
||||
function(clear_cache)
|
||||
message(STATUS "clearing CPM cache")
|
||||
FILE(REMOVE_RECURSE ${CPM_SOURCE_CACHE_DIR})
|
||||
ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}")
|
||||
file(REMOVE_RECURSE ${CPM_SOURCE_CACHE_DIR})
|
||||
assert_not_exists("${CPM_SOURCE_CACHE_DIR}")
|
||||
endfunction()
|
||||
|
||||
function(update_cmake_lists)
|
||||
@@ -22,100 +22,92 @@ endfunction()
|
||||
|
||||
function(reset_test)
|
||||
clear_cache()
|
||||
FILE(REMOVE_RECURSE ${TEST_BUILD_DIR})
|
||||
file(REMOVE_RECURSE ${TEST_BUILD_DIR})
|
||||
update_cmake_lists()
|
||||
endfunction()
|
||||
|
||||
set(FIBONACCI_VERSION 1.0)
|
||||
|
||||
## Read CPM_SOURCE_CACHE from arguments
|
||||
# Read CPM_SOURCE_CACHE from arguments
|
||||
|
||||
reset_test()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
COMMAND ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}"
|
||||
"-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
assert_equal(${ret} "0")
|
||||
assert_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
file(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count)
|
||||
ASSERT_EQUAL(${FIBONACCI_VERSION_count} "1")
|
||||
assert_equal(${FIBONACCI_VERSION_count} "1")
|
||||
|
||||
FILE(GLOB fibonacci_versions "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
file(GLOB fibonacci_versions "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
list(LENGTH fibonacci_versions fibonacci_version_count)
|
||||
ASSERT_EQUAL(${fibonacci_version_count} "1")
|
||||
assert_equal(${fibonacci_version_count} "1")
|
||||
|
||||
## Update dependency and keep CPM_SOURCE_CACHE
|
||||
# Update dependency and keep CPM_SOURCE_CACHE
|
||||
|
||||
set(FIBONACCI_VERSION 2.0)
|
||||
update_cmake_lists()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} ${TEST_BUILD_DIR}
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} ${TEST_BUILD_DIR} RESULT_VARIABLE ret)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
|
||||
FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
file(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
|
||||
list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count)
|
||||
ASSERT_EQUAL(${FIBONACCI_VERSION_count} "2")
|
||||
assert_equal(${FIBONACCI_VERSION_count} "2")
|
||||
|
||||
## Clear cache and update
|
||||
# Clear cache and update
|
||||
|
||||
clear_cache()
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} ${TEST_BUILD_DIR} RESULT_VARIABLE ret)
|
||||
|
||||
assert_equal(${ret} "0")
|
||||
assert_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
# Read CPM_SOURCE_CACHE from environment
|
||||
|
||||
reset_test()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} ${TEST_BUILD_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
assert_equal(${ret} "0")
|
||||
assert_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
# Reuse cached packages for other build
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}-2"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
assert_equal(${ret} "0")
|
||||
|
||||
## Read CPM_SOURCE_CACHE from environment
|
||||
# Overwrite CPM_SOURCE_CACHE with argument
|
||||
|
||||
reset_test()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}"
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CMAKE_CURRENT_BINARY_DIR}/junk" ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}"
|
||||
"-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
assert_equal(${ret} "0")
|
||||
assert_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
## Reuse cached packages for other build
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}-2"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
|
||||
## Overwrite CPM_SOURCE_CACHE with argument
|
||||
|
||||
reset_test()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CMAKE_CURRENT_BINARY_DIR}/junk" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" "-DCPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
## Use NO_CACHE option
|
||||
# Use NO_CACHE option
|
||||
|
||||
set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES")
|
||||
set(FIBONACCI_VERSION 1.0)
|
||||
@@ -123,25 +115,23 @@ update_cmake_lists()
|
||||
reset_test()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
assert_equal(${ret} "0")
|
||||
assert_not_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
## Use commit hash after version
|
||||
# Use commit hash after version
|
||||
|
||||
set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES GIT_TAG e9ebf168ca0fffaa4ef8c6fefc6346aaa22f6ed5")
|
||||
set(FIBONACCI_VERSION 1.1)
|
||||
update_cmake_lists()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
COMMAND ${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND}
|
||||
"-H${CMAKE_CURRENT_LIST_DIR}/remote_dependency" "-B${TEST_BUILD_DIR}" RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
assert_equal(${ret} "0")
|
||||
assert_not_exists("${CPM_SOURCE_CACHE_DIR}/fibonacci")
|
||||
|
||||
@@ -5,31 +5,19 @@ include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
set(CPM_DRY_RUN ON)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME A
|
||||
GIT_TAG 1.2.3
|
||||
)
|
||||
CPMAddPackage(NAME A GIT_TAG 1.2.3)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME A
|
||||
VERSION 1.2.3
|
||||
)
|
||||
CPMAddPackage(NAME A VERSION 1.2.3)
|
||||
|
||||
CPMGetPackageVersion(A VERSION)
|
||||
ASSERT_EQUAL(${VERSION} "1.2.3")
|
||||
assert_equal(${VERSION} "1.2.3")
|
||||
|
||||
CPMAddPackage(
|
||||
NAME B
|
||||
VERSION 2.4.1
|
||||
)
|
||||
CPMAddPackage(NAME B VERSION 2.4.1)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME B
|
||||
GIT_TAG v2.3.1
|
||||
)
|
||||
CPMAddPackage(NAME B GIT_TAG v2.3.1)
|
||||
|
||||
CPMGetPackageVersion(B VERSION)
|
||||
ASSERT_EQUAL(${VERSION} "2.4.1")
|
||||
assert_equal(${VERSION} "2.4.1")
|
||||
|
||||
CPMAddPackage(
|
||||
NAME C
|
||||
@@ -38,4 +26,4 @@ CPMAddPackage(
|
||||
)
|
||||
|
||||
CPMGetPackageVersion(C VERSION)
|
||||
ASSERT_EQUAL(${VERSION} "3.1.2")
|
||||
assert_equal(${VERSION} "3.1.2")
|
||||
|
||||
@@ -3,20 +3,20 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
include(${CPM_PATH}/CPM.cmake)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("v1.2.3" RESULT)
|
||||
ASSERT_EQUAL("0" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("v1.2.3" RESULT)
|
||||
assert_equal("0" ${RESULT})
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("asio-1-12-1" RESULT)
|
||||
ASSERT_EQUAL("0" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("asio-1-12-1" RESULT)
|
||||
assert_equal("0" ${RESULT})
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("513039e3cba83284cec71287fd829865b9f423bc" RESULT)
|
||||
ASSERT_EQUAL("1" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("513039e3cba83284cec71287fd829865b9f423bc" RESULT)
|
||||
assert_equal("1" ${RESULT})
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("513039E3CBA83284CEC71287FD829865B9F423BC" RESULT)
|
||||
ASSERT_EQUAL("1" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("513039E3CBA83284CEC71287FD829865B9F423BC" RESULT)
|
||||
assert_equal("1" ${RESULT})
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("513039E" RESULT)
|
||||
ASSERT_EQUAL("1" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("513039E" RESULT)
|
||||
assert_equal("1" ${RESULT})
|
||||
|
||||
CPM_IS_GIT_TAG_COMMIT_HASH("513039E3CBA8" RESULT)
|
||||
ASSERT_EQUAL("1" ${RESULT})
|
||||
cpm_is_git_tag_commit_hash("513039E3CBA8" RESULT)
|
||||
assert_equal("1" ${RESULT})
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
function(dependency_function)
|
||||
message("called external method")
|
||||
endfunction()
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/modules)
|
||||
|
||||
function(initProjectWithDependency TEST_DEPENDENCY_NAME)
|
||||
function(init_project_with_dependency TEST_DEPENDENCY_NAME)
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_LIST_DIR}/local_dependency/ModuleCMakeLists.txt.in"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/local_dependency/CMakeLists.txt"
|
||||
@@ -12,19 +11,18 @@ function(initProjectWithDependency TEST_DEPENDENCY_NAME)
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
endfunction()
|
||||
|
||||
initProjectWithDependency(A)
|
||||
ASSERT_EXISTS(${TEST_BUILD_DIR}/CPM_modules)
|
||||
ASSERT_EXISTS(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
ASSERT_NOT_EXISTS(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
init_project_with_dependency(A)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
assert_not_exists(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
|
||||
initProjectWithDependency(B)
|
||||
ASSERT_NOT_EXISTS(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
ASSERT_EXISTS(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
init_project_with_dependency(B)
|
||||
assert_not_exists(${TEST_BUILD_DIR}/CPM_modules/FindA.cmake)
|
||||
assert_exists(${TEST_BUILD_DIR}/CPM_modules/FindB.cmake)
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/package-lock)
|
||||
|
||||
function(configureWithDeclare DECLARE_DEPENDENCY)
|
||||
function(configure_with_declare DECLARE_DEPENDENCY)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -rf ${TEST_BUILD_DIR})
|
||||
|
||||
if(DECLARE_DEPENDENCY)
|
||||
set(PREPARE_CODE "CPMDeclarePackage(Dependency
|
||||
set(PREPARE_CODE
|
||||
"CPMDeclarePackage(Dependency
|
||||
NAME Dependency
|
||||
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/local_dependency/dependency
|
||||
)")
|
||||
)"
|
||||
)
|
||||
else()
|
||||
set(PREPARE_CODE "")
|
||||
endif()
|
||||
@@ -23,27 +24,30 @@ function(configureWithDeclare DECLARE_DEPENDENCY)
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR} -DCPM_INCLUDE_ALL_IN_PACKAGE_LOCK=1
|
||||
RESULT_VARIABLE ret
|
||||
COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR}
|
||||
-DCPM_INCLUDE_ALL_IN_PACKAGE_LOCK=1 RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
endfunction()
|
||||
|
||||
function(updatePackageLock)
|
||||
function(update_package_lock)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} --build ${TEST_BUILD_DIR} --target cpm-update-package-lock
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
endfunction()
|
||||
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
configureWithDeclare(YES)
|
||||
ASSERT_NOT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
updatePackageLock()
|
||||
ASSERT_EXISTS(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
configureWithDeclare(NO)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake
|
||||
)
|
||||
configure_with_declare(YES)
|
||||
assert_not_exists(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
update_package_lock()
|
||||
assert_exists(${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake)
|
||||
configure_with_declare(NO)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${CMAKE_CURRENT_LIST_DIR}/local_dependency/package-lock.cmake
|
||||
)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
@@ -13,8 +12,9 @@ configure_package_config_file(
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR} -DCPM_Dependency_SOURCE=${CMAKE_CURRENT_LIST_DIR}/local_dependency/dependency
|
||||
COMMAND ${CMAKE_COMMAND} -H${CMAKE_CURRENT_LIST_DIR}/local_dependency -B${TEST_BUILD_DIR}
|
||||
-DCPM_Dependency_SOURCE=${CMAKE_CURRENT_LIST_DIR}/local_dependency/dependency
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
|
||||
#include <fibonacci.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main() {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
@@ -13,9 +12,8 @@ configure_package_config_file(
|
||||
)
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/local_dependency" "-B${TEST_BUILD_DIR}"
|
||||
RESULT_VARIABLE ret
|
||||
)
|
||||
|
||||
ASSERT_EQUAL(${ret} "0")
|
||||
assert_equal(${ret} "0")
|
||||
|
||||
@@ -3,14 +3,14 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
include(${CPM_PATH}/CPM.cmake)
|
||||
include(${CPM_PATH}/testing.cmake)
|
||||
|
||||
CPM_GET_VERSION_FROM_GIT_TAG("1.2.3" VERSION)
|
||||
ASSERT_EQUAL("1.2.3" ${VERSION})
|
||||
cpm_get_version_from_git_tag("1.2.3" VERSION)
|
||||
assert_equal("1.2.3" ${VERSION})
|
||||
|
||||
CPM_GET_VERSION_FROM_GIT_TAG("v1.2.3" VERSION)
|
||||
ASSERT_EQUAL("1.2.3" ${VERSION})
|
||||
cpm_get_version_from_git_tag("v1.2.3" VERSION)
|
||||
assert_equal("1.2.3" ${VERSION})
|
||||
|
||||
CPM_GET_VERSION_FROM_GIT_TAG("1.2.3-a" VERSION)
|
||||
ASSERT_EQUAL("1.2.3" ${VERSION})
|
||||
cpm_get_version_from_git_tag("1.2.3-a" VERSION)
|
||||
assert_equal("1.2.3" ${VERSION})
|
||||
|
||||
CPM_GET_VERSION_FROM_GIT_TAG("v1.2.3-a" VERSION)
|
||||
ASSERT_EQUAL("1.2.3" ${VERSION})
|
||||
cpm_get_version_from_git_tag("v1.2.3-a" VERSION)
|
||||
assert_equal("1.2.3" ${VERSION})
|
||||
|
||||
Reference in New Issue
Block a user