Updated readme and wip version.

This commit is contained in:
Steffen Schuemann 2019-08-05 12:10:00 +02:00
parent c2c74695d2
commit 17bad8c51d
2 changed files with 39 additions and 18 deletions

View File

@ -63,7 +63,7 @@ of the UTF-8 preference on Windows).
Unit tests are currently run with: Unit tests are currently run with:
* macOS 10.12: Xcode 9.2 (clang-900.0.39.2), GCC 8.1.0, Clang 7.0.0, macOS 10.14: Xcode 10.2 * macOS 10.12: Xcode 9.2 (clang-900.0.39.2), GCC 8.1.0, Clang 7.0.0, macOS 10.14: Xcode 10.2
* Windows: Visual Studio 2017, Visual Studio 2015, Visual Studio 2019, MingW GCC 6.3 (Win32), GCC 7.2 (Win64) * Windows: Visual Studio 2017, Visual Studio 2015, Visual Studio 2019, MinGW GCC 6.3 (Win32), GCC 7.2 (Win64)
* Linux (Ubuntu): GCC (5.5, 6.5, 7.4, 8.1, 8.2), Clang (5.0, 6.0, 7.1, 8.0) * Linux (Ubuntu): GCC (5.5, 6.5, 7.4, 8.1, 8.2), Clang (5.0, 6.0, 7.1, 8.0)
@ -113,20 +113,33 @@ Everything is in the namespace `ghc::filesystem`, so one way to use it only as
a fallback could be: a fallback could be:
```cpp ```cpp
#if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include) && __has_include(<filesystem>) #if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include)
#if __has_include(<filesystem>)
#define GHC_USE_STD_FS
#include <filesystem> #include <filesystem>
namespace fs = std::filesystem; namespace fs = std::filesystem;
#else #endif
#endif
#ifndef GHC_USE_STD_FS
#include <ghc/filesystem.hpp> #include <ghc/filesystem.hpp>
namespace fs = ghc::filesystem; namespace fs = ghc::filesystem;
#endif #endif
``` ```
**Note that this code uses a two-stage preprocessor condition because Visual Studio 2015
doesn't like the `(<...>)` syntax, even if it could cut evaluation early before.**
**Note also, that on MSVC this detection only works starting from version 15.7 on and when setting
the `/Zc:__cplusplus` compile switch, as the compiler allways reports `199711L`
without that switch ([see](https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/)).**
If you want to also use the `fstream` wrapper with `path` support as fallback, If you want to also use the `fstream` wrapper with `path` support as fallback,
you might use: you might use:
```cpp ```cpp
#if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include) && __has_include(<filesystem>) #if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include)
#if __has_include(<filesystem>)
#define GHC_USE_STD_FS
#include <filesystem> #include <filesystem>
namespace fs { namespace fs {
using namespace std::filesystem; using namespace std::filesystem;
@ -134,7 +147,9 @@ using ifstream = std::ifstream;
using ofstream = std::ofstream; using ofstream = std::ofstream;
using fstream = std::fstream; using fstream = std::fstream;
} }
#else #endif
#endif
#ifndef GHC_USE_STD_FS
#include <ghc/filesystem.hpp> #include <ghc/filesystem.hpp>
namespace fs { namespace fs {
using namespace ghc::filesystem; using namespace ghc::filesystem;
@ -148,12 +163,8 @@ using fstream = ghc::filesystem::fstream;
Now you have e.g. `fs::ofstream out(somePath);` and it is either the wrapper or Now you have e.g. `fs::ofstream out(somePath);` and it is either the wrapper or
the C++17 `std::ofstream`. the C++17 `std::ofstream`.
**Note, that on MSVC this detection only works starting from version 15.7 on and when setting **Be aware, as a header-only library, it is not hiding the fact, that it
the `/Zc:__cplusplus` compile switch, as the compiler allways reports `199711L` uses system includes, so they "pollute" your global namespace.**
without that switch ([see](https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/)).**
Be aware too, as a header-only library, it is not hiding the fact, that it
uses system includes, so they "pollute" your global namespace.
:information_source: **Hint:** There is an additional header named `ghc/fs_std.hpp` that implements this :information_source: **Hint:** There is an additional header named `ghc/fs_std.hpp` that implements this
dynamic selection of a filesystem implementation, that you can include dynamic selection of a filesystem implementation, that you can include
@ -181,7 +192,9 @@ If you use the forwarding/implementation approach, you can still use the dynamic
switching like this: switching like this:
```cpp ```cpp
#if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include) && __has_include(<filesystem>) #if defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include)
#if __has_include(<filesystem>)
#define GHC_USE_STD_FS
#include <filesystem> #include <filesystem>
namespace fs { namespace fs {
using namespace std::filesystem; using namespace std::filesystem;
@ -189,7 +202,9 @@ using ifstream = std::ifstream;
using ofstream = std::ofstream; using ofstream = std::ofstream;
using fstream = std::fstream; using fstream = std::fstream;
} }
#else #endif
#endif
#ifndef GHC_USE_STD_FS
#include <ghc/fs-fwd.hpp> #include <ghc/fs-fwd.hpp>
namespace fs { namespace fs {
using namespace ghc::filesystem; using namespace ghc::filesystem;
@ -204,9 +219,11 @@ and in the implementation hiding cpp, you might use (before any include that inc
to take precedence: to take precedence:
```cpp ```cpp
#if !(defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include) && __has_include(<filesystem>)) #if !(defined(__cplusplus) && __cplusplus >= 201703L && defined(__has_include)
#if __has_include(<filesystem>))
#include <ghc/fs_impl.hpp> #include <ghc/fs_impl.hpp>
#endif #endif
#endif
``` ```
:information_source: **Hint:** There are additional helper headers, named `ghc/fs_std_fwd.hpp` and :information_source: **Hint:** There are additional helper headers, named `ghc/fs_std_fwd.hpp` and
@ -455,6 +472,10 @@ to the expected behavior.
## Release Notes ## Release Notes
### v1.2.3 (wip)
* Enabled stronger warning switches and fixed issues on GCC and MinGW
### [v1.2.2](https://github.com/gulrak/filesystem/releases/tag/v1.2.2) ### [v1.2.2](https://github.com/gulrak/filesystem/releases/tag/v1.2.2)
* Fix for ([#21](https://github.com/gulrak/filesystem/pull/21)), when compiling * Fix for ([#21](https://github.com/gulrak/filesystem/pull/21)), when compiling
@ -464,8 +485,8 @@ to the expected behavior.
### [v1.2.0](https://github.com/gulrak/filesystem/releases/tag/v1.2.0) ### [v1.2.0](https://github.com/gulrak/filesystem/releases/tag/v1.2.0)
* Added MingW 32/64 and Visual Studio 2015 builds to the CI configuration. * Added MinGW 32/64 and Visual Studio 2015 builds to the CI configuration.
* Fixed additional compilation issues on MingW. * Fixed additional compilation issues on MinGW.
* Pull request ([#13](https://github.com/gulrak/filesystem/pull/13)), set * Pull request ([#13](https://github.com/gulrak/filesystem/pull/13)), set
minimum required CMake version to 3.7.2 (as in Debian 8). minimum required CMake version to 3.7.2 (as in Debian 8).
* Pull request ([#14](https://github.com/gulrak/filesystem/pull/14)), added * Pull request ([#14](https://github.com/gulrak/filesystem/pull/14)), added
@ -539,7 +560,7 @@ to the expected behavior.
* The `std::basic_string_view` variants of the `fs::path` api are * The `std::basic_string_view` variants of the `fs::path` api are
now supported when compiling with C++17. now supported when compiling with C++17.
* Added CI integration for Travis-CI and Appveyor. * Added CI integration for Travis-CI and Appveyor.
* Fixed MingW compilation issues. * Fixed MinGW compilation issues.
* Added long filename support for Windows. * Added long filename support for Windows.
### [v1.0.10](https://github.com/gulrak/filesystem/releases/tag/v1.0.10) ### [v1.0.10](https://github.com/gulrak/filesystem/releases/tag/v1.0.10)

View File

@ -172,7 +172,7 @@
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch) // ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch)
#define GHC_FILESYSTEM_VERSION 10202L #define GHC_FILESYSTEM_VERSION 10203L
namespace ghc { namespace ghc {
namespace filesystem { namespace filesystem {