mirror of
https://github.com/CLIUtils/CLI11.git
synced 2025-05-01 21:23:52 +00:00
Boost optional is no longer automatic (#279)
* Boost optional is no longer automatic * Tighten up optional a bit * Check times
This commit is contained in:
parent
10e4b0784b
commit
b6e3fb126a
@ -5,7 +5,7 @@ steps:
|
|||||||
cmakeArgs: .. -DCLI11_SINGLE_FILE=$(cli11.single) -DCLI11_CXX_STD=$(cli11.std) -DCLI11_SINGLE_FILE_TESTS=$(cli11.single) -DCMAKE_BUILD_TYPE=$(cli11.build_type) $(cli11.options)
|
cmakeArgs: .. -DCLI11_SINGLE_FILE=$(cli11.single) -DCLI11_CXX_STD=$(cli11.std) -DCLI11_SINGLE_FILE_TESTS=$(cli11.single) -DCMAKE_BUILD_TYPE=$(cli11.build_type) $(cli11.options)
|
||||||
displayName: 'Configure'
|
displayName: 'Configure'
|
||||||
|
|
||||||
- script: cmake --build . $(cli11.threadopt)
|
- script: cmake --build .
|
||||||
displayName: 'Build'
|
displayName: 'Build'
|
||||||
workingDirectory: build
|
workingDirectory: build
|
||||||
|
|
||||||
|
@ -11,6 +11,9 @@ else()
|
|||||||
cmake_policy(VERSION 3.14)
|
cmake_policy(VERSION 3.14)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# TESTING: remove this later
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
|
||||||
|
|
||||||
set(VERSION_REGEX "#define CLI11_VERSION[ \t]+\"(.+)\"")
|
set(VERSION_REGEX "#define CLI11_VERSION[ \t]+\"(.+)\"")
|
||||||
|
|
||||||
# Read in the line containing the version
|
# Read in the line containing the version
|
||||||
|
@ -11,7 +11,7 @@ variables:
|
|||||||
cli11.std: 14
|
cli11.std: 14
|
||||||
cli11.build_type: Debug
|
cli11.build_type: Debug
|
||||||
cli11.options:
|
cli11.options:
|
||||||
cli11.threadopt: -j
|
CMAKE_BUILD_PARALLEL_LEVEL: 4
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ jobs:
|
|||||||
cli11.options: -DCLANG_TIDY_FIX=ON
|
cli11.options: -DCLANG_TIDY_FIX=ON
|
||||||
cli11.std: 11
|
cli11.std: 11
|
||||||
cli11.single: OFF
|
cli11.single: OFF
|
||||||
cli11.threadopt:
|
CMAKE_BUILD_PARALLEL_LEVEL: 1
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-16.04'
|
vmImage: 'ubuntu-16.04'
|
||||||
container: silkeh/clang:5
|
container: silkeh/clang:5
|
||||||
@ -37,9 +37,9 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
Linux:
|
Linux:
|
||||||
vmImage: 'ubuntu-16.04'
|
vmImage: 'ubuntu-latest'
|
||||||
macOS:
|
macOS:
|
||||||
vmImage: 'macOS-10.14'
|
vmImage: 'macOS-latest'
|
||||||
Windows:
|
Windows:
|
||||||
vmImage: 'vs2017-win2016'
|
vmImage: 'vs2017-win2016'
|
||||||
pool:
|
pool:
|
||||||
@ -52,7 +52,7 @@ jobs:
|
|||||||
variables:
|
variables:
|
||||||
cli11.single: OFF
|
cli11.single: OFF
|
||||||
pool:
|
pool:
|
||||||
vmImage: 'ubuntu-16.04'
|
vmImage: 'ubuntu-latest'
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
gcc9:
|
gcc9:
|
||||||
|
@ -8,30 +8,35 @@
|
|||||||
#include "CLI/Macros.hpp"
|
#include "CLI/Macros.hpp"
|
||||||
|
|
||||||
// [CLI11:verbatim]
|
// [CLI11:verbatim]
|
||||||
#ifdef __has_include
|
|
||||||
|
|
||||||
// You can explicitly enable or disable support
|
// You can explicitly enable or disable support
|
||||||
// by defining these to 1 or 0.
|
// by defining to 1 or 0. Extra check here to ensure it's in the stdlib too.
|
||||||
#if defined(CLI11_CPP17) && __has_include(<optional>) && \
|
// We nest the check for __has_include and it's usage
|
||||||
!defined(CLI11_STD_OPTIONAL)
|
#ifndef CLI11_STD_OPTIONAL
|
||||||
|
#ifdef __has_include
|
||||||
|
#if defined(CLI11_CPP17) && __has_include(<optional>)
|
||||||
#define CLI11_STD_OPTIONAL 1
|
#define CLI11_STD_OPTIONAL 1
|
||||||
#elif !defined(CLI11_STD_OPTIONAL)
|
#else
|
||||||
#define CLI11_STD_OPTIONAL 0
|
#define CLI11_STD_OPTIONAL 0
|
||||||
#endif
|
#endif
|
||||||
|
#else
|
||||||
|
#define CLI11_STD_OPTIONAL 0
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(CLI11_EXPERIMENTAL_OPTIONAL)
|
#ifndef CLI11_EXPERIMENTAL_OPTIONAL
|
||||||
#define CLI11_EXPERIMENTAL_OPTIONAL 0
|
#define CLI11_EXPERIMENTAL_OPTIONAL 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if __has_include(<boost/optional.hpp>) && !defined(CLI11_BOOST_OPTIONAL)
|
#ifndef CLI11_BOOST_OPTIONAL
|
||||||
#include <boost/version.hpp>
|
|
||||||
#if BOOST_VERSION >= 106100
|
|
||||||
#define CLI11_BOOST_OPTIONAL 1
|
|
||||||
#endif
|
|
||||||
#elif !defined(CLI11_BOOST_OPTIONAL)
|
|
||||||
#define CLI11_BOOST_OPTIONAL 0
|
#define CLI11_BOOST_OPTIONAL 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CLI11_BOOST_OPTIONAL
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
#if BOOST_VERSION < 106100
|
||||||
|
#error "This boost::optional version is not supported, use 1.61 or better"
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CLI11_STD_OPTIONAL
|
#if CLI11_STD_OPTIONAL
|
||||||
|
@ -115,15 +115,15 @@ file(WRITE "${PROJECT_BINARY_DIR}/CTestCustom.cmake"
|
|||||||
find_package(Boost 1.61)
|
find_package(Boost 1.61)
|
||||||
if(Boost_FOUND)
|
if(Boost_FOUND)
|
||||||
if(TARGET Boost::boost)
|
if(TARGET Boost::boost)
|
||||||
target_link_libraries(informational PUBLIC Boost::boost)
|
target_link_libraries(informational PRIVATE Boost::boost)
|
||||||
target_link_libraries(OptionalTest PUBLIC Boost::boost)
|
target_link_libraries(OptionalTest PRIVATE Boost::boost)
|
||||||
else()
|
else()
|
||||||
target_include_directories(informational PUBLIC ${Boost_INCLUDE_DIRS})
|
target_include_directories(informational PRIVATE ${Boost_INCLUDE_DIRS})
|
||||||
target_include_directories(OptionalTest PUBLIC ${Boost_INCLUDE_DIRS})
|
target_include_directories(OptionalTest PRIVATE ${Boost_INCLUDE_DIRS})
|
||||||
endif()
|
endif()
|
||||||
# Enforce Boost::Optional even if __has_include is missing on your compiler
|
|
||||||
target_compile_definitions(informational PUBLIC CLI11_BOOST_OPTIONAL)
|
target_compile_definitions(informational PRIVATE CLI11_BOOST_OPTIONAL)
|
||||||
target_compile_definitions(OptionalTest PUBLIC CLI11_BOOST_OPTIONAL)
|
target_compile_definitions(OptionalTest PRIVATE CLI11_BOOST_OPTIONAL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(CMAKE_BUILD_TYPE STREQUAL Coverage)
|
if(CMAKE_BUILD_TYPE STREQUAL Coverage)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user