12.0-RELEASE-p7 doesn't contain std::filesystem that has been added to 12.0-STABLE some time later
Jan Beich
jbeich at FreeBSD.org
Wed Jul 10 19:01:51 UTC 2019
Yuri <yuri at rawbw.com> writes:
> On 2019-07-10 07:19, Jan Beich wrote:
>
>> C++ example:
>>
>> #if __cplusplus >= 201703L && __has_include(<filesystem>)
>> #include <filesystem>
>> #else
>> #include <experimental/filesystem>
>> namespace std {
>> namespace filesystem = experimental::filesystem;
>> }
>> #endif
>>
>> Makefile example:
>>
>> .if exists(/usr/lib/libc++fs.a)
>> LIBS+= -lc++fs
>> .elif exists(/usr/lib/libc++experimental.a)
>> # XXX Remove after FreeBSD 12.0 EOL
>> LIBS+= -lc++experimental
>> .else
>> # XXX Remove after FreeBSD 11.2 EOL
>> USE_GCC= yes
>> LIBS+= -lstdc++fs
>> .endif
>
>
> This helps with locating the header/library, but it fails to compile
> in poudriere on 12.0-RELEASE-p7:
>
> x.cpp:213:15: error: no member named 'is_symlink' in
> 'std::experimental::filesystem::v1::directory_entry'
> if (entry.is_symlink())
> ~~~~~ ^
Convert "entry.is_symlink()" to "std::filesystem::is_symlink(entry)"
> It looks like 12.0-RELEASE-p7 is technically broken, because it
> doesn't include is_symlink().
is_symlink() exists but not as a member function of directory_entry
under std::experimental namespace. Same is true even for newer versions
of libc++ or libstdc++.
More information about the freebsd-ports
mailing list