Вопросы

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

Читать:
Как добавить NODE в конец двойного связанного списка?

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

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

Symfony4: изображение не может быть сохранено

admin

Член функции-аксессора для вариативной шаблонной структуры

admin

Использование grep для печати одной из перечисленных строк, но для печати их всех, если существует более одной

admin

Как читать прямоугольник, окруженный пробелами, используя readxl

admin

Докеризация Vue во Flask с использованием uwsgi и nginx

admin

Сборка Azure DevOps застряла в очереди при использовании sonarqube

admin