MacOS Catalina выдает ошибки при попытке скомпилировать файл примера из Boost Tutorial на C ++

Я пытался начать разработку Boost на своем Macbook с MacOS Catalina (OSX 10.15). Ниже приведена ссылка на файл example.cpp на странице Boost Getting Started on Unix Variants:

Ссылка: https://www.boost.org/doc/libs/1_71_0/more/getting_started/unix-variants.html#boost-root-directory

Я также предоставлю код прямо здесь:

#include <boost/lambda/lambda.hpp> #include <iostream> #include <iterator> #include <algorithm> int main() { using namespace boost::lambda; typedef std::istream_iterator<int> in; std::for_each( in(std::cin), in(), std::cout << (_1 * 3) << » » ); }

При компиляции на терминале я получаю следующие ошибки:

In file included from example1.cpp:1: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/lambda.hpp:23: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/detail/operator_return_type_traits.hpp:24: In file included from /Users/sharvankumar/boost_1_71_0/boost/detail/container_fwd.hpp:98: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/complex:246: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:313:9: error: no member named ‘signbit’ in the global namespace using ::signbit; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:314:9: error: no member named ‘fpclassify’ in the global namespace using ::fpclassify; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:315:9: error: no member named ‘isfinite’ in the global namespace; did you mean ‘finite’? using ::isfinite; ~~^ /usr/local/include/math.h:749:12: note: ‘finite’ declared here extern int finite(double) ^ In file included from example1.cpp:1: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/lambda.hpp:23: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/detail/operator_return_type_traits.hpp:24: In file included from /Users/sharvankumar/boost_1_71_0/boost/detail/container_fwd.hpp:98: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/complex:246: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:316:9: error: no member named ‘isinf’ in the global namespace using ::isinf; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:317:9: error: no member named ‘isnan’ in the global namespace using ::isnan; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:318:9: error: no member named ‘isnormal’ in the global namespace using ::isnormal; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:319:7: error: no member named ‘isgreater’ in the global namespace; did you mean ‘::std::greater’? using ::isgreater; ^~ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:720:29: note: ‘::std::greater’ declared here struct _LIBCPP_TEMPLATE_VIS greater : binary_function<_Tp, _Tp, bool> ^ In file included from example1.cpp:1: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/lambda.hpp:23: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/detail/operator_return_type_traits.hpp:24: In file included from /Users/sharvankumar/boost_1_71_0/boost/detail/container_fwd.hpp:98: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/complex:246: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:320:7: error: no member named ‘isgreaterequal’ in the global namespace; did you mean ‘::std::greater_equal’? using ::isgreaterequal; ^~ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/functional:749:29: note: ‘::std::greater_equal’ declared here struct _LIBCPP_TEMPLATE_VIS greater_equal : binary_function<_Tp, _Tp, bool> ^ In file included from example1.cpp:1: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/lambda.hpp:23: In file included from /Users/sharvankumar/boost_1_71_0/boost/lambda/detail/operator_return_type_traits.hpp:24: In file included from /Users/sharvankumar/boost_1_71_0/boost/detail/container_fwd.hpp:98: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/complex:246: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:321:9: error: no member named ‘isless’ in the global namespace using ::isless; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:322:9: error: no member named ‘islessequal’ in the global namespace using ::islessequal; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:323:9: error: no member named ‘islessgreater’ in the global namespace using ::islessgreater; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:324:9: error: no member named ‘isunordered’ in the global namespace using ::isunordered; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/cmath:325:9: error: no member named ‘isunordered’ in the global namespace using ::isunordered; ~~^ 13 errors generated.

Теперь, после большого количества поисков в Google, чтения сообщений на StackOverflow и на форуме разработчиков Apple, я пришел к выводу, что существует некоторая проблема с заголовочными файлами cmath и math.h в Xcode, которая вызывает эту проблему. До OSX 10.14 для этого было исправление, которое заключалось в установке пакета macOS_SDK_headers_for_macOS_10.14.pkg, который устанавливал необходимые заголовки в базовой системе. Но начиная с Каталины, они удалили этот пакет.

Теперь, пока Apple не предоставит обходной путь для этого, мне было интересно, могу ли я получить какую-либо помощь, специфичную для Boost? Единственный другой вариант — понизить версию моей MacOS, но я ищу более простой вариант. Любая помощь приветствуется.

Я могу вам сказать, что это не имеет ничего общего с Boost, поэтому здесь не будет ничего специфичного для Boost. Я знаю, как это исправить, потому что мне пришлось это сделать несколько недель назад, но мне нужно помнить …   —  person Bhargav Varshney    schedule 09.12.2019

Было бы полезно, если бы вы объяснили, как вы это строите. Командная строка? Или из IDE? Используете встроенную систему сборки или CMake?   —  person Bhargav Varshney    schedule 09.12.2019

@LightnessRaceswithMonica я использую командную строку   —  person Bhargav Varshney    schedule 09.12.2019

Пожалуйста, будьте конкретны. Не только я использую командную строку. Приведите точные шаги. Фактический текст. Представьте, что компьютеры сложные и что я не вижу ваш экран отсюда.   —  person Bhargav Varshney    schedule 09.12.2019

@Botje, да, это так !! Благодаря тонну!   —  person Bhargav Varshney    schedule 09.12.2019

Источник: ledsshop.ru

Стиль жизни - Здоровье!