4

私は独自の libc++ をビルドしており、通常は-I /path/to/lib/include -L /path/to/lib/lib. しかし今、私は Mac を使用している他の人とプロジェクトを共有する必要があり、「正常に動作する」® Makefile™ を彼らに渡したいと思っています。

次のプログラムを検討してください。

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    uint32_t nums[100];

    for (size_t i = 0; i < 10; ++i)
    {
        nums[i] = 666;
    }

    vector<int> hello{1, 2, 3, 4, 5, 6, 7, 8};
    for_each(hello.begin(), hello.end(), [](int tal)
    {
        cout << tal << endl;
    });
}

でコンパイルすると、フラグのclang++ -o test test.cc欠落に関連するエラーが自然に発生します。-std=c++11では、追加しましょうclang++ -std=c++11 -o test test.cc。これにより、いくつかのエラーが発生します。そのうちの 1 つは次のとおりです。

test.cc:15:17: error: no matching constructor for initialization of 'vector<int>'
vector<int> hello{1, 2, 3, 4, 5, 6, 7, 8};

わかりました、C++11 対応の C++ ライブラリが必要です。

clang++ -std=c++11 -stdlib=libc++ -o test test.cc 
test.cc:1:10: fatal error: 'algorithm' file not found
#include <algorithm>

これに対する私の解決策は、手動でコンパイルされた libc++ を使用-Iして-L指すことでした。

これを共有する人はそれを持っていませんが、少なくとも XCode を持っていると仮定します。上記のコードをコピーするにはどうすればよいですか? 確かに OS X には C++11 機能が搭載されている必要があります???

[編集]

homwbrew の xcode を使用して llvm をインストールしたため、clang が表示されていたことが判明しましたwhich clang。自作のclangはシンボリックリンクされないだろうと思っていましたが、シンボリックリンクされ/usr/local/binたようです。だから私が学んだ教訓は(これまで何度もそうであったように)決して想定しないでRTFMに任せることだと思います!

4

2 に答える 2

6

最近の Xcode リリースでは、clang ヘッダーと libc++ ヘッダーの両方が Xcode.app 内に配置されています。それをクリックしてコントロールし、「パッケージの内容を表示」を選択して、このディレクトリに移動します。

コマンド ラインの clang が Xcode.app 内のものと同じであることを確認します。

$ which clang++

私のため:

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/clang++ 

と:

/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/lib/c++/v1
于 2013-04-12T21:58:59.310 に答える