Reputation: 707
I am getting the following error whenever I try to build my code on Xcode on my Mac.
My current system:
macOS: version 10.15.1 (19B88)
Xcode: Version 11.2.1 (11B500)
my error:
'path' is unavailable: introduced in macOS 10.15
'current_path' is unavailable: introduced in macOS 10.15
'operator/' is unavailable: introduced in macOS 10.15
'path' is unavailable: introduced in macOS 10.15
'path' is unavailable: introduced in macOS 10.15
main.cpp
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <filesystem>
using namespace std;
int main(int argc, char* argv[])
{
cout << "being exectued from:" << endl;
cout << argv[0] << endl;
std::__fs::filesystem::path cwd = std::__fs::filesystem::current_path() / "filename.txt"; // C++17
cout << "but the input.txt and output.txt files should be be in the following directory:" << endl;
cout << cwd.string() << endl << endl;
After running g++
on terminal I get
clang: error: no input files
And after running g++ --version
I get
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1 Apple clang version 11.0.0 (clang-1100.0.33.12) Target: x86_64-apple-darwin19.0.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Upvotes: 8
Views: 7361
Reputation: 101
Add
CONFIG += c++17
and
macx: {
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15
}
to your .pro file.
That should set -std=gnu++1z -mmacosx-version-min=10.15
flags to compiler.
Also I used Apple Clang compiler both for C++ and C (may be set in Preferences -> Kits). Not sure if it is critical, but GCC did not work definitely.
Upvotes: 6
Reputation: 707
Using SDK 10.15, Xcode 11 and and enabling C++17 compiler solved this issue.
To enable C++17, followi this link: Enable C++17 on Xcode, macOS
On your Xcode, from General setting, select 10.15 SDK as Deployment Target and you are good to go for .
Upvotes: 3