2017-03-06 74 views
8

我需要用我的的Mac(Mac系統零三年十二月十日)的(實驗)C++17文件系統庫,但clang寫一個程序似乎不具有包含在文件系統頭。MACOS鏘C++ 17文件系統頭沒有找到

因爲我需要使用C++17,所以我不能使用像Boost庫這樣的替代方法。

當我嘗試編譯一個示例程序,只是包括文件系統和iostream(並寫入cout

#include <filesystem> 
#include <iostream> 
using namespace std; 

int main(){ 
    cout << "test" << endl; 
} 

我收到以下錯誤信息:

>clang test.cpp -std=c++1z 

test.cpp:2:10: fatal error: 'filesystem' file not found 
#include <filesystem> 
     ^
1 error generated. 

當我嘗試同樣的使用GCC 6.3(通過自制軟件安裝)我得到:

>gcc-6 test.cpp -std=c++17 
test.cpp:2:22: fatal error: filesystem: No such file or directory 
#include <filesystem> 
        ^
compilation terminated. 

我用實驗/文件系統,而不是來編譯使用gcc但似乎試圖編譯爲iOS導致這似乎是與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 

我鐺的版本另一個錯誤也嘗試是:

>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 

我很感激任何有用的輸入,因爲目前爲止我找不到解決我的問題的任何東西(儘管我可能一直在尋找錯誤的術語)。

如果你需要更多的信息,我會很樂意提供它,但我希望已經包括了一切。

+0

如果分配有這樣的需求聯繫起來,也許是教練應該告訴你如何真正做到這一點(編譯器和編譯器標誌)? – crashmstr

+0

嗯,他只使用Linux,所以他不知道如何在mac上做... – snoato

+0

@DeiDei LibC++(Clang)將不會在4.0中發佈''。 – EricWF

回答

9

作爲OS X上的C++標準庫的LibC++尚未將<experimental/filesystem>更改爲<filesystem>,但還因爲規範不穩定。

但願<filesystem>將成爲Clang 6.0版本的一部分。 (編輯:我們錯過5.0)

+1

我看,謝謝:) 但它不應該能夠包括<實驗/文件系統>? – snoato

+1

蘋果上游libC++更改的速度不取決於我。在3.9版本中,LibC++首次發佈了「」,但Apple尚未將其作爲XCode的一部分發布。如果你想從trunk中構建自己的libC++版本,它將包含''。 – EricWF

+0

好的,謝謝! – snoato

0

,包括讓你的聲明,但 獲得的定義也必須與-lstdC++ FS鏈接( 的libstdC++)或我不知道(對的libC++ )。如果有人知道,也許他們 可以更新這個答案?

有關的libC++你需要-lc++experimental