Вопросы

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, который устанавливал необходимые заголовки в базовой системе. Но начиная с Каталины, они удалили этот пакет.

Читать:
Makefile не находит библиотеки

Теперь, пока 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

Похожие записи

Разбор ответа api бота телеграммы

admin

Как запустить анимацию CSS только после полной загрузки страницы?

admin

Как автоматически обновлять пакеты NuGet до последней доступной версии

admin

Необходимость разделения файлов YAML для конвейеров

admin

Должно ли имя пакета в Go совпадать с именем самого внутреннего каталога?

admin

MySQL ORDER BY FIELD на месяцы

admin