Gesendet: Donnerstag, 08. April 2021 um 19:55 Uhr Von: "Allen Sanderson via Boost"
An: boost@lists.boost.org When select_stdlib_config.hpp is included it gets to this initial code to include <version>
... #if defined(__cplusplus) && defined(__has_include) # if __has_include(<version>) // It should be safe to include `<version>` when it is present without checking // the actual C++ language version as it consists solely of macro definitions. // [version.syn] p1: The header <version> supplies implementation-dependent // information about the C++ standard library (e.g., version number and release date). # include <version> ...
The issue is that many projects (gnuplot, builtbot, and others) have a VERSION file in their top level src directory. On a traditional Linux system the case sensitivity would make sure the right file is included. However, many/most OS X file systems are case insensitive. As such, the project's VERSION file gets included instead. And does not compile.
I have no solution to the issue other than I renamed our project’s VERSION file for the time being. However, I wanted to raise the issue as I noticed it when moving to 1.75 and backtracked out that it was a recent changed starting with boost 1.73
My personal opinion on this: Boost could put this include behind a c++ version check to reduce the number of collisions for now (I'd guess compilation with c++20 is not yet a common scenario), but I think this is an issue that has to be raised with the respective projects. <version> is a c++20 standard header that might not only be included by more and mmore 3rd party libs, but also by any other standard library header. So this conflict is bound to become more and more common. Best Mike