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

См. также:  Использование или назначение указателя на указатель (C)

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

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: