找不到macOS Clang C ++ 17文件系统头文件

时间:2017-03-06 18:59:39

标签: c++ macos gcc clang c++17

我需要使用(实验性)C++17文件系统库编写程序,但我的 Mac(macOS 10.12.03)上的clang似乎没有包含文件系统头。

由于我需要使用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

我很感激任何有用的输入,因为到目前为止我找不到解决我问题的任何内容(尽管我可能一直在寻找错误的术语)。

如果您需要更多信息,我很乐意提供,但我希望包含所有内容。

8 个答案:

答案 0 :(得分:19)

Libc ++,它是OS X上的C ++标准库,尚未将<experimental/filesystem>移动到<filesystem>,因为规范不稳定。

希望<filesystem>将成为Clang 6.0版本的一部分。 (编辑:我们错过了5.0)

答案 1 :(得分:9)

Xcode 11 Beta现在包含input_size = 784 hidden_sizes = [128, 64] output_size = 10 # Build a feed-forward network model = nn.Sequential(nn.Linear(input_size, hidden_sizes[0]), nn.ReLU(), nn.Linear(hidden_sizes[0], hidden_sizes[1]), nn.ReLU(), nn.Linear(hidden_sizes[1], output_size), nn.Softmax(dim=1)) 。与其他表示Xcode 10支持beta的答案不同,Apple在release notes中提到了这一点。

在发行说明中也提到过,仅iOS 13,macOS 10.15,watchOS 6和tvOS 13支持此功能。

答案 2 :(得分:6)

作为对Max Raskin的答复:从2018年7月17日起,我已经安装Xcode 10 Beta 4,并且此版本没有“ #include ”或“ #include ”。

release notes也没有提到libc ++ 17 <文件系统>。发行说明 do 提到Xcode 10中包含以下内容:

示例包含文件位置:

/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/experimental

答案 3 :(得分:2)

  

包括获取声明,但是   得到你还必须与-lstdc ++ fs链接的定义(for   libstdc ++)或者我不知道(对于libc ++)。如果有人知道,也许他们   可以更新这个答案吗?

对于libc ++,您需要链接-lc++experimental

答案 4 :(得分:2)

只需检查Xcode 10.2 Beta 4,它就具有常规的<filesystem>!出于好奇,它在/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/中。

编辑:

下载的Xcode 10.2(10E125)aaaaand ... <filesystem>再次消失了。 release notes中没有任何提及。如果您碰巧有一个包含<filesystem>的Xcode版本(例如我之前提到的Beta 4),那么复制该文件似乎可以:

$ sudo cp /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/filesystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/

请记住,每个Xcode更新很可能会破坏此替代方法,并需要另一个副本。另外,可能有充分的理由说明Beta版实施未纳入发行版。谨慎操作...

答案 5 :(得分:1)

如果有人仍然感兴趣,Xcode 10 Beta附带了具有实验/文件系统的libc ++

更新其中一个Xcode 10 beta用于随附它,可能是偶然的,不幸的是Xcode 10.1没有它:(

答案 6 :(得分:0)

已安装Xcode 9.4 - 无

但自制软件用llvm 6来救援。

brew更新 brew install llvm

随着PATH的变化,我不在了。

答案 7 :(得分:0)

在c中使用ftw进行递归目录遍历,更多详细信息here

打开,对于MacOS版本10.xx,-std=c++17filesystem不可用。

#include <ftw.h>
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>

 
int list(const char *name, const struct stat *status, int type)
{
     if (type == FTW_NS)
     {
         return 0;
     }

     if (type == FTW_F)
     {
         printf("0%3o\t%s\n", status->st_mode&0777, name);
     }

     if (type == FTW_D && strcmp(".", name) != 0)
     {
         printf("0%3o\t%s/\n", status->st_mode&0777, name);
     }
     return 0;
}

int main(int argc, char *argv[])
{
     if(argc == 1)
     {
         ftw(".", list, 1);
     }
     else
     {
         ftw(argv[1], list, 1);
     }

     return 0;
}

输出如下:

0755    ./Shivaji/
0644    ./Shivaji/20200516_204454.png
0644    ./Shivaji/20200527_160408.png
0644    ./Shivaji/20200527_160352.png
0644    ./Shivaji/20200520_174754.png
0644    ./Shivaji/20200520_180103.png
0755    ./Saif/
0644    ./Saif/Snapchat-1751229005.jpg
0644    ./Saif/Snapchat-1356123194.jpg
0644    ./Saif/Snapchat-613911286.jpg
0644    ./Saif/Snapchat-107742096.jpg
0755    ./Milind/
0644    ./Milind/IMG_1828.JPG
0644    ./Milind/IMG_1839.JPG
0644    ./Milind/IMG_1825.JPG
0644    ./Milind/IMG_1831.JPG
0644    ./Milind/IMG_1840.JPG