Ошибка C++ 11 std :: unique_ptr cmake 3.11.3 начальной загрузки

Я пытаюсь загрузить cmake 3.11.3 на Ubuntu 16.04.4 LTS xenial.

Я обновил свой компилятор gnu g ++ следующим образом:

> $ g++ --version
g++ (Ubuntu 8.1.0-5ubuntu1~16.04) 8.1.0 Copyright (C) 2018 Free
Software Foundation, Inc. This is free software; see the source for 
copying conditions.  There is NO warranty; not even for MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE.

И вручную перенаправили символические ссылки:

$ ll /usr/bin/*g++*
lrwxrwxrwx 1 root root       5 Jun  8 16:57 /usr/bin/g++ -> g++-8*
-rwxr-xr-x 1 root root  919832 Apr 24 15:02 /usr/bin/g++-5*
lrwxrwxrwx 1 root root      22 Jun  6 04:26 /usr/bin/g++-8 -> x86_64-linux-gnu-g++-8*
lrwxrwxrwx 1 root root      22 Jun  8 16:58 /usr/bin/x86_64-linux-gnu-g++ -> x86_64-linux-gnu-g++-8*
lrwxrwxrwx 1 root root       5 Apr 24 15:02 /usr/bin/x86_64-linux-gnu-g++-5 -> g++-5*
-rwxr-xr-x 1 root root 1071984 Jun  6 04:26 /usr/bin/x86_64-linux-gnu-g++-8*

Однако я получаю следующую ошибку в конфигурации cmake:

$ sudo ./bootstrap 
---------------------------------------------
CMake 3.11.3, Copyright 2000-2018 Kitware, Inc. and Contributors
Found GNU toolchain
C compiler on this system is: gcc       
C++ compiler on this system is: g++          
Makefile processor on this system is: make
g++ has setenv
g++ has unsetenv
g++ does not have environ in stdlib.h
g++ has stl wstring
g++ has <ext/stdio_filebuf.h>
---------------------------------------------
make: Warning: File 'Makefile' has modification time 2.3 s in the future
make: 'cmake' is up to date.
make: warning:  Clock skew detected.  Your build may be incomplete.
loading initial cache file /mnt/ganymede/user/gpeytavi/srv_admin/software/cmake-3.11.3/Bootstrap.cmk/InitialCacheFlags.cmake
CMake Error at CMakeLists.txt:92 (message):
  The C++ compiler does not support C++11 (e.g.  std::unique_ptr).


-- Configuring incomplete, errors occurred!
See also "/mnt/ganymede/user/gpeytavi/srv_admin/software/cmake-3.11.3/CMakeFiles/CMakeOutput.log".
See also "/mnt/ganymede/user/gpeytavi/srv_admin/software/cmake-3.11.3/CMakeFiles/CMakeError.log".
---------------------------------------------
Error when bootstrapping CMake:
Problem while running initial CMake
---------------------------------------------

Есть идеи, почему я получаю ошибку несовместимости с C++ 11 std::unique_ptr?

Упоминание unique_ptr, вероятно, просто отвлекающий маневр. В вашем файле make необходимо указать -std=c++11, чтобы включить синтаксис C++ 11. Если ваш компилятор или make слишком стары, чтобы распознать это, -std=gnu++11 может работать.

Gem Taylor 08.06.2018 17:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
1
4 160
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

На самом деле сценарий ./bootstrap действительно пытается использовать различные стандартные флаги C++ с компилятором. Таким образом, он должен автоматически определять свои возможности.

Убедитесь, что у вас не задана никакая переменная среды CXXFLAGS, и попробуйте снова с нуля (сообщения / предупреждения, которые вы получаете, указывают на несколько попыток / ошибок в одном каталоге).

Вывод при успехе

В качестве ссылки на мой Ubuntu вызов CMake ./bootstrap выглядит так:

---------------------------------------------
CMake 3.11.20180423, Copyright 2000-2018 Kitware, Inc. and Contributors
Warning: This is an in-source build
Found GNU toolchain
C compiler on this system is: gcc
C++ compiler on this system is: g++  -std=gnu++1y
Makefile processor on this system is: make
g++ has setenv
g++ has unsetenv
g++ does not have environ in stdlib.h
g++ has stl wstring
g++ has <ext/stdio_filebuf.h>
---------------------------------------------

Отладка

Для отладки вашей проблемы вы также можете:

  • Позвоните в ./bootstrap --verbose
  • Загляните в Bootstrap.cmk/cmake_bootstrap.log

Известная проблема

У меня только однажды была проблема с bootstrap с использованием компиляторов clang, где мне нужно было сделать следующий вызов:

export CXXFLAGS=-Xclang -std=c++1z -Xclang -stdlib=libc++

Альтернатива

Если вы просто хотите установить последнюю версию, см. Как указать, где установлен CMake в Ubuntu?

Большое спасибо, опция --verbose дала мне подсказку. У меня были файлы Cmake на смонтированном диске, и я пытался выполнить загрузку оттуда. Очевидно (по непонятным мне причинам) это невозможно.

Ela 13.06.2018 11:27

В случае, если кто-то еще попадает в это, причина в смещении часов. Если временные метки на сетевом диске не совпадают с локальными файлами, cmake очень запутается, и тесты начнут давать сбой. Создайте локальный каталог, и ошибка исчезнет.

jcupitt 09.11.2018 15:36

Да, для меня это тоже был перекос часов. Я использовал кластерный компьютер, у которого не было прямого соединения www, но вместо этого мне приходилось получать все данные с центрального сервера; и по какой-то причине часы пошли не так. Это была досадная ошибка.

shevy 03.05.2019 17:51

В моем случае проблема связана с тем, что папка, в которой у меня есть исходный код CMake, находится в смонтированном каталоге (на самом деле все мои rootfs смонтированы через NFS) Итак, я просмотрел вывод команды «mount» и выбрал местоположение «/ run / user / 1000» в качестве локального, поскольку оно монтируется с помощью tmpfs, и переместил исходный код CMake в это место. с этим ./bootstrap && make && sudo make install выполнено успешно.

Это сработало! Я понятия не имел, что пытался собрать cmake в смонтированном каталоге, но после того, как я проделал то же самое в ~ /, он просто сработал! Спасибо.

Sixtina Aquafina 20.04.2020 10:13

Это сработало и для меня!

H Krishnan 09.03.2021 10:20

Не могли бы вы подробнее рассказать, в чем проблема? Я пытаюсь создать что-то, для чего у меня достаточно места только на монтировании NFS, поэтому переместить его в другое место на самом деле не вариант.

HunterZ 30.03.2021 06:16

Я смог решить проблему, убедившись, что и машина сборки, и файловый сервер NFS были синхронизированы, запустив ntpd на обоих.

Другие вопросы по теме