【发布时间】:2019-07-07 18:13:14
【问题描述】:
我需要为我的项目使用 C++ 17 的文件系统头文件。据我所知,Apple 终于在 Xcode 11 和 macOS Catalina 中提供了它。我使用的是最新的(beta 3)Xcode 11,我使用的是 macOS Catalina public beta 2,所以理论上它应该可以工作。但由于某种原因它不是,Xcode 会给出如下错误:
'~path' is unavailable: introduced in macOS 10.15
如果我在 Build Setting 中将 C++ 标准库设置为 libc++ 中的 libstdc++,这些错误消息消失了,我收到了警告:
include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead
以及各种文件中缺少 iostream 和 cstddef 的大量错误。我该怎么做才能使文件系统正常工作?
编辑:一个最小的代码示例
#include <filesystem>
#include <iostream>
#include <string>
bool isPathDir(std::string pathString);
int main(int argc, char *argv[])
{
std::string pathString = "../test.jpg";
if (isPathDir(pathString)) {
std::cout << "This is a directory!" << std::endl;
} else {
std::cout << "This is not a directory" << std::endl;
}
}
bool isPathDir(std::string pathString)
{
std::filesystem::path path(pathString);
return std::filesystem::is_directory(path);
}
【问题讨论】:
-
你有一个失败的minimal reproducible example,你可以告诉我们吗?你是如何建立你的项目的?也许您需要添加标志(显式或通过切换)以启用 C++17?
-
@Someprogrammerdude 我添加了一个简单的示例代码 sn-p。我将此项目设置为命令行应用程序,并向其中添加了 GoogleTest 和 OpenCV 库以及一些特定于 opencv 的标志。
-
@DonátHorváth "code sn-p" 与 minimal reproducible example 相差甚远 - 这是所要求的。
-
据我所知,Apple 不再为 Mac OS 提供 libstdc++;所以这真的不应该是 Xcode 中的选择。我会让苹果的人知道。但这并不能回答您的问题。
-
您是否碰巧指定了早于 macOS 10.15 的后台部署目标?这将在您的命令行上显示为
-mmacosx-version-min=<value>。