Я пытаюсь получить emscripten для работы с OS X 10.8, см. this post по некоторым связанным с этим вопросам. По-видимому, версия clang++
, поставляемая с Xcode, слишком старая, поэтому я получил недавний clang 3.7.0 с использованием MacPorts. Я даже сказал CMake использовать этот компилятор (проходящее -DCMAKE_CXX_COMPILER=clang++-mp-3.7
в командной строке), но она по-прежнему не удается:MacPorts clang не использует свои собственные заголовки
[ 33%] Building CXX object CMakeFiles/optimizer.dir/parser.cpp.o
/opt/local/bin/clang++-mp-3.7 -std=c++11 -fno-exceptions -fno-rtti -O3 -DNDEBUG
-o CMakeFiles/optimizer.dir/parser.cpp.o
-c …/emsdk/emscripten/master/tools/optimizer/parser.cpp
In file included from …/emsdk/emscripten/master/tools/optimizer/parser.cpp:2:
In file included from …/emsdk/emscripten/master/tools/optimizer/parser.h:12:
…/emsdk/emscripten/master/tools/optimizer/istring.h:3:10: fatal error:
'unordered_set' file not found
#include <unordered_set>
^
1 error generated.
я могу воспроизвести эту проблему, запустив компилятор из командной строки. В режиме параллельной сборки иногда вместо этого жалуется на <cstdint>
для optimizer.cpp
. Оба этих заголовка существуют в /opt/local/libexec/llvm-3.7/include/c++/v1/
.
- Что такое канонический способ использования установленной в macports версии
clang++
, включая ее заголовки? Должен ли я использовать-I
и выработать полный путь, или есть что-то более короткое? - Могу ли я безопасно это сделать, не переключая библиотеку времени выполнения на тот, который поставляется с clang MacPorts? Если нет, могу ли я каким-либо образом закодировать полный путь библиотеки времени выполнения в созданный двоичный файл, либо для этой единственной библиотеки, либо с помощью аргумента
-rpath
доld
или некоторой эквивалентной альтернативы?
Обновление: Я получаю неразрешенные символы, когда пытаюсь связать материал после указания каталога include вручную, и я не знаю, как это решить. Пакетlibcxx
из MacPorts пуст, за исключением файла readme.