Я создал свой собственный libC++, и я обычно включаю его с -I /path/to/lib/include -L /path/to/lib/lib
. Но теперь мне нужно поделиться проектом с кем-то еще с Mac, и я хочу передать им Makefile ™, который «просто работает» ®.Где находится libC++ на OS X?
Рассмотрим следующую программу:
#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
. Это дает несколько ошибок, один из которых -
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>
Мое решение это было использовать -I
и -L
указывая на мой вручную скомпилированы LibC++.
Предполагая, что человек, которому я поделюсь этим, не имеет этого, но имеет как минимум XCode. Что я могу сделать, чтобы сделать код выше? Разумеется, OS X должна поставляться с возможностями C++ 11 ???
[EDIT]
Оказывается, что с тех пор как я установил LLVM с Xcode из homwbrew, что лязг отображались, когда я сделал which clang
. Я предположил, что clang из homebrew не получит символическую связь в /usr/local/bin
, но, судя по всему, это произошло. Поэтому я думаю, что урок, который был извлечен (как это было много раз раньше), никогда не предполагает, но RTFM!
Зависит от версии OSX относительно того, поддерживает ли libstdC++ поддержку некоторых из C++ 11. Я не думаю, что все функции доступны, хотя и в последней версии. –
Этот код легко компилируется на последнем XCode (4.6.1) на Mountain Lion (clang-425.0.27), когда установлены инструменты командной строки. – Petesh
@Petesh Weird, у меня есть Mountain Lion, новая установка от 2 дней назад и последняя версия XCode с установленными инструментами командной строки .... Какие флаги вы проходите, чтобы их собрать? – evading