1. ホーム
  2. c++

[解決済み】Xcode 11.1: iostream' ファイルが見つかりません。

2022-02-15 19:28:50

質問

を更新したところです。 MacBook Pro から macOS Catalina 10.15 をコンパイルし、実行しようとしました。 C++コマンドライン・プログラム しかし、以前のバージョンでは存在しなかった問題が発生しました。

これは単純にコードです。

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, World!\n";
    return 0;
}

コードは期待通りにコンパイルされ、出力されますが、それでもXcodeは言います。

fatal error: 'iostream' file not found

を変更してみました。 ビルド設定/C++標準ライブラリ から libstdc++ という警告が出ますが。

warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead

そして、同じiostreamエラーがまだ存在しています。

どうすればいいですか?

コマンドラインからコンパイルしているのですが、ここに掲載されているどの回答も(あるいは他の回答も)私には効果がありませんでした。

うまくいきそうなのは(今のところ)、以下を .profile またはターミナルが起動する際に使用するスクリプトのいずれかを使用します。(zsh、csh、bashなど)

export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include

を変更する必要があるでしょう。 MacOSX10.15.sdk オペレーティングシステムをアップグレードするたびに

C_INCLUDE_PATHCPLUS_INCLUDE_PATH は MacOS 環境ではなく clang ツールチェイン用のオプションなので、このソリューションが長期的に機能することを期待します。 xcode-select --install (アップグレード時にインクルードディレクトリを修正しない) や ln -s ... /usr/include (System Integrity Protection で禁止されるようになりました)。