为什么Xcode 11 beta版可以';t使用C++;17';s<;文件系统>;头球? 我需要使用C++ 17的文件系统头来为我的项目使用。据我所知,苹果最终使用Xcode 11和macOS Catalina实现了这一功能。我使用的是最新的(beta 3)Xcode 11,我使用的是macOS Catalina public beta 2,所以理论上它应该可以工作。但由于某些原因,它不是,Xcode会给出如下错误: '~path' is unavailable: introduced in macOS 10.15

为什么Xcode 11 beta版可以';t使用C++;17';s<;文件系统>;头球? 我需要使用C++ 17的文件系统头来为我的项目使用。据我所知,苹果最终使用Xcode 11和macOS Catalina实现了这一功能。我使用的是最新的(beta 3)Xcode 11,我使用的是macOS Catalina public beta 2,所以理论上它应该可以工作。但由于某些原因,它不是,Xcode会给出如下错误: '~path' is unavailable: introduced in macOS 10.15,c++,xcode,macos,c++17,C++,Xcode,Macos,C++17,如果将生成环境中的C++标准库设置为LIbcd++ +从LBC+++中,这些错误的信息就消失了,我得到了一个警告: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead 以及各种文件中缺少iostream和cstddef的大量错误。我该怎么做才能使文件系统工作 Edit:一个最小的代码示

如果将生成环境中的C++标准库设置为LIbcd++ +从LBC+++中,这些错误的信息就消失了,我得到了一个警告:

include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead 
以及各种文件中缺少iostream和cstddef的大量错误。我该怎么做才能使文件系统工作

Edit:一个最小的代码示例

#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);
}
#包括
#包括
#包括
bool-isPathDir(std::string-pathString);
int main(int argc,char*argv[])
{
std::string pathString=“../test.jpg”;
if(isPathDir(路径字符串)){

std::cout将我的评论提升为答案:


是否指定了早于macOS 10.15的后台部署目标?这将在命令行中显示为类似
-mmacox version min=

@LouisDionne哦,是的,这就是问题所在!当我将部署目标设置为10.15时,代码构建就完美了!我以前从未听说过部署目标,非常感谢


只是为了解释这里发生了什么,问题是对
的支持只在Mac OS 10.15中引入。当您使用
-mmacosx version min=XYZ
时,您告诉编译器,在版本
XYZ
之前,您的程序应该能够一直在Mac OS版本上运行。如果您使用的版本早于10.15,我们会很高兴y在编译时告诉您不能使用
,因为如果您尝试在10.15以上版本的Mac OS上运行该程序,这将是一个运行时错误(可能是
libc++.dylib
中缺少符号)。

您是否有失败的错误,可以向我们展示?您是如何设置项目的?可能需要添加标志(显式地或通过切换)启用C++17?@Someprogrammerdude我添加了一个简单的示例代码段。我将此项目设置为命令行应用程序,并向其中添加了GoogleTest和OpenCV库,其中包含一些OpenCV特定的标志。@DonátHorv ath“代码段”与要求的a-相去甚远。据我所知,苹果不再将libstdc++与Mac OS一起提供;因此,在Xcode中这真的不应该是一个选择。我会让苹果的人知道。但这并不能回答您的问题。您是否指定了比macOS 10.15更旧的后部署目标?这将显示在您的命令行中e类似于
-mmacosx version min=