私は独自の 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に任せることだと思います!