При попытке скомпилировать мое программное обеспечение в Mac OS Sierra Я столкнулся с проблемой неизвестных прагм (см. Ниже ниже). По словам коллеги, программное обеспечение может компилироваться в Mac OS X Yosemite с той же версией clang (4.2.1). Используемые флаги для компиляции: -std=c++11 -stdlib=libc++
. Использование stdlibc++
не является опцией, поскольку оно не включает std::shared_ptr
.Неизвестная группа предупреждения '-Wmaybe-unintialized' Mac OS Sierra
error: unknown warning group '-Wmaybe-uninitialized', ignored
[-Werror,-Wunknown-pragmas]
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
Вот распечатку g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Неуверенные, где взять его отсюда, любой вход высоко ценится.
На MacOS стандартный компилятор Clang, который * в основном * совместим с GCC. Команда 'g ++' является просто псевдонимом для 'clang ++'. Если вам требуется конкретное поведение GCC (например, прагма, которую вы показываете), я предлагаю условную компиляцию для этих частей. –
Благодарим вас за ответ @Someprogrammerdude. Хорошо, программное обеспечение скомпилировано с помощью 'cmake', где и я, и мой коллега используют ту же конфигурацию' cmake', пока его работы и мои нет. Есть ли существенная разница между Yosemite и Sierra в терминах версий clang и библиотек, которые могут помешать «-Wmaybe-uninitialized» и заставить его терпеть неудачу при компиляции? – Philip