I need to write a program using the (experimental) C++17
filesystem library but clang
on my Mac (macOS 10.12.03) doesn't seem to have the filesystem header included.
Since I'm required to use the C++17
, I cannot use alternatives like the Boost
library.
When I try to compile a sample program that just includes filesystem and iostream
(and writes to cout
)
#include <filesystem>
#include <iostream>
using namespace std;
int main(){
cout << "test" << endl;
}
I get the following error message:
>clang test.cpp -std=c++1z
test.cpp:2:10: fatal error: 'filesystem' file not found
#include <filesystem>
^
1 error generated.
When I try the same using GCC 6.3 (installed via homebrew) I get:
>gcc-6 test.cpp -std=c++17
test.cpp:2:22: fatal error: filesystem: No such file or directory
#include <filesystem>
^
compilation terminated.
I also tried using experimental/filesystem instead which compiles using gcc
but seems to try to compile for iOS leading to another error which seems to be related to iostream
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccd5QiVt.o
"std::ios_base::Init::~Init()", referenced from:
__static_initialization_and_destruction_0(int, int) in ccd5QiVt.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
The version of my clang is:
>clang --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
I'm grateful for any helpful input since I couldn't find anything that solved my problem so far (although I might have been searching for the wrong terms).
If you need more information I'll gladly provide it but I hope to have included everything.
Libc++, which is the C++ standard library on OS X, has not moved <experimental/filesystem>
to <filesystem>
yet because the specification is not stable.
Hopefully <filesystem>
will be a part of the Clang 6.0 release. (We missed 5.0)