Commit b9a2f320b912aae623c4acddea06cba399b98654
Committed by
GitHub
1 parent
7432ab26
Add windows latest and gcc 8 builds to azure (#446)
* add windows latest and gcc 8 builds to azure * try adding pr trigger * try adding something specific for gcc 8 * use interface instead of public * try C++17 on clang 8 * update the readme with some additional notes about gcc 8 * fix some incorrect doxygen comment formatting * try using the glibcxx_release value * debug some code paths to make sure macros are working * Update readme and fix formatting. * update formatting for Validators
Showing
4 changed files
with
38 additions
and
3 deletions
README.md
| @@ -151,6 +151,21 @@ make | @@ -151,6 +151,21 @@ make | ||
| 151 | GTEST_COLOR=1 CTEST_OUTPUT_ON_FAILURE=1 make test | 151 | GTEST_COLOR=1 CTEST_OUTPUT_ON_FAILURE=1 make test |
| 152 | ``` | 152 | ``` |
| 153 | 153 | ||
| 154 | +<details><summary>Note: Special instructions for GCC 8</summary><p> | ||
| 155 | + | ||
| 156 | +If you are using GCC 8 and using it in C++17 mode with CLI11. CLI11 makes use of the `<filesystem>` header if available, but specifically for this compiler, the `filesystem` library is separate from the standard library and needs to be linked separately. So it is available but CLI11 doesn't use it by default. | ||
| 157 | + | ||
| 158 | +Specifically `libstdc++fs` needs to be added to the linking list and `CLI11_HAS_FILESYSTEM=1` has to be defined. Then the filesystem variant of the Validators could be used on GCC 8. GCC 9+ does not have this issue so the `<filesystem>` is used by default. | ||
| 159 | + | ||
| 160 | +There may also be other cases where a specific library needs to be linked. | ||
| 161 | + | ||
| 162 | +Defining `CLI11_HAS_FILESYSTEM=0` which will remove the usage and hence any linking issue. | ||
| 163 | + | ||
| 164 | +In some cases certain clang compilations may require linking against `libc++fs`. These situations have not been encountered so the specific situations requiring them are unknown yet. | ||
| 165 | + | ||
| 166 | +</p></details> | ||
| 167 | +</br> | ||
| 168 | + | ||
| 154 | ## Usage | 169 | ## Usage |
| 155 | 170 | ||
| 156 | ### Adding options | 171 | ### Adding options |
azure-pipelines.yml
| @@ -6,6 +6,9 @@ | @@ -6,6 +6,9 @@ | ||
| 6 | trigger: | 6 | trigger: |
| 7 | - master | 7 | - master |
| 8 | 8 | ||
| 9 | +pr: | ||
| 10 | +- master | ||
| 11 | + | ||
| 9 | variables: | 12 | variables: |
| 10 | cli11.single: ON | 13 | cli11.single: ON |
| 11 | cli11.std: 14 | 14 | cli11.std: 14 |
| @@ -57,6 +60,9 @@ jobs: | @@ -57,6 +60,9 @@ jobs: | ||
| 57 | Windows11: | 60 | Windows11: |
| 58 | vmImage: 'vs2017-win2016' | 61 | vmImage: 'vs2017-win2016' |
| 59 | cli11.std: 11 | 62 | cli11.std: 11 |
| 63 | + Windowslatest: | ||
| 64 | + vmImage: 'windows-2019' | ||
| 65 | + cli11.std: 17 | ||
| 60 | pool: | 66 | pool: |
| 61 | vmImage: $(vmImage) | 67 | vmImage: $(vmImage) |
| 62 | steps: | 68 | steps: |
| @@ -89,6 +95,9 @@ jobs: | @@ -89,6 +95,9 @@ jobs: | ||
| 89 | gcc9: | 95 | gcc9: |
| 90 | containerImage: gcc:9 | 96 | containerImage: gcc:9 |
| 91 | cli11.std: 17 | 97 | cli11.std: 17 |
| 98 | + gcc8: | ||
| 99 | + containerImage: gcc:8 | ||
| 100 | + cli11.std: 17 | ||
| 92 | gcc4.8: | 101 | gcc4.8: |
| 93 | containerImage: gcc:4.8 | 102 | containerImage: gcc:4.8 |
| 94 | cli11.std: 11 | 103 | cli11.std: 11 |
| @@ -100,6 +109,10 @@ jobs: | @@ -100,6 +109,10 @@ jobs: | ||
| 100 | containerImage: silkeh/clang:8 | 109 | containerImage: silkeh/clang:8 |
| 101 | cli11.std: 14 | 110 | cli11.std: 14 |
| 102 | cli11.options: -DCLI11_FORCE_LIBCXX=ON | 111 | cli11.options: -DCLI11_FORCE_LIBCXX=ON |
| 112 | + clang8_17: | ||
| 113 | + containerImage: silkeh/clang:8 | ||
| 114 | + cli11.std: 17 | ||
| 115 | + cli11.options: -DCLI11_FORCE_LIBCXX=ON | ||
| 103 | container: $[ variables['containerImage'] ] | 116 | container: $[ variables['containerImage'] ] |
| 104 | steps: | 117 | steps: |
| 105 | - template: .ci/azure-cmake.yml | 118 | - template: .ci/azure-cmake.yml |
include/CLI/FormatterFwd.hpp
| @@ -24,9 +24,9 @@ class App; | @@ -24,9 +24,9 @@ class App; | ||
| 24 | /// the second argument. | 24 | /// the second argument. |
| 25 | 25 | ||
| 26 | enum class AppFormatMode { | 26 | enum class AppFormatMode { |
| 27 | - Normal, //< The normal, detailed help | ||
| 28 | - All, //< A fully expanded help | ||
| 29 | - Sub, //< Used when printed as part of expanded subcommand | 27 | + Normal, ///< The normal, detailed help |
| 28 | + All, ///< A fully expanded help | ||
| 29 | + Sub, ///< Used when printed as part of expanded subcommand | ||
| 30 | }; | 30 | }; |
| 31 | 31 | ||
| 32 | /// This is the minimum requirements to run a formatter. | 32 | /// This is the minimum requirements to run a formatter. |
include/CLI/Validators.hpp
| @@ -33,7 +33,14 @@ | @@ -33,7 +33,14 @@ | ||
| 33 | #else | 33 | #else |
| 34 | #include <filesystem> | 34 | #include <filesystem> |
| 35 | #if defined __cpp_lib_filesystem && __cpp_lib_filesystem >= 201703 | 35 | #if defined __cpp_lib_filesystem && __cpp_lib_filesystem >= 201703 |
| 36 | +#if defined _GLIBCXX_RELEASE && _GLIBCXX_RELEASE >= 9 | ||
| 36 | #define CLI11_HAS_FILESYSTEM 1 | 37 | #define CLI11_HAS_FILESYSTEM 1 |
| 38 | +#elif defined(__GLIBCXX__) | ||
| 39 | +// if we are using gcc and Version <9 default to no filesystem | ||
| 40 | +#define CLI11_HAS_FILESYSTEM 0 | ||
| 41 | +#else | ||
| 42 | +#define CLI11_HAS_FILESYSTEM 1 | ||
| 43 | +#endif | ||
| 37 | #else | 44 | #else |
| 38 | #define CLI11_HAS_FILESYSTEM 0 | 45 | #define CLI11_HAS_FILESYSTEM 0 |
| 39 | #endif | 46 | #endif |