2012-05-07 5 views
4

Я пытаюсь скомпилировать проект CMake, который используетвариант "-std = гну ++ 0x" для MacOS

set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-Wall -std=gnu++0x") 

в файле CMakeLists.txt под MacOS X Lion. Я установил XCode 4.2.1. но компилятор не может с этим: Verion

cd something/src/lib && /usr/bin/c++ -Dlib_ginacra_EXPORTS -Wall -std=gnu++0x -fPIC -o CMakeFiles/lib_ginacra.dir/utilities.cpp.o -c something/src/lib/utilities.cpp 
cc1plus: error: unrecognized command line option "-std=gnu++0x" 

составителя является:

c++ --version 
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00) 
+0

Вам необходима более новая версия GCC. (http://gcc.gnu.org/projects/cxx0x.html) – Mat

+0

Спасибо! Каким будет предпочтительный (элегантный) способ сделать это с MacOS X Lion? – joachim

+0

Вы попробовали «clang»? Попробуйте 'export CC = clang' и' export CXX = clang ++ 'перед запуском' cmake'. – trojanfoe

ответ

7

GCC 4.2 является древним, но Apple, не грузите новую версию.

Вы можете либо установить современную GCC где-то, как Mac портов (что, вероятно, проще и быстрее) или построить его самостоятельно, следуя инструкциям на http://gcc.gnu.org/wiki/InstallingGCC

+0

Или вы можете перейти на новейший Xcode? – trojanfoe

+3

Последний Xcode не поставляется с какой-либо новой версией gcc. Я думаю, что это все еще llvm-gcc-4.2. –

+6

'варочный кран homebrew/versions && brew install gcc48' – fedosov

0

Для пользователей Lion сталкивается этот вопрос:

Скачать и УСТАНАВЛИВАЕТЕ MacPorts-2.2.1-10.7-Lion.pkg MacPorts пакет установки от here

в терминале, поиск новых версий GCC:

$ port search --name --glob 'gcc*' 

установить новую версию (я пошел с gcc5)

$ sudo port install gcc5 

получить имя вашей новой версии, и установить его по умолчанию

$ port select --list gcc 

Available versions for gcc: 
    llvm-gcc42 
    mp-gcc5 
    none (active) 

$ sudo port select --set gcc mp-gcc5 

открыть новый терминал и подтвердить вас

$ c++ --version 
c++ (MacPorts gcc5 5.2.0_0) 5.2.0 
-1

Большинство из вас получает эту ошибку "cc1plus: ошибка: непризнанная опция командной строки -std = gnu ++ 0x" при установке расширения nodejs, для которого требуется компиляция C++ с node-gyp. Итак, как решить эту ошибку, так что вот решение. В основном вы получаете эти ошибки из-за разной версии Nodejs, так как многие библиотеки узлов требуют компиляции C или C++ при установке. Таким образом, старшая версия Nodejs использует python 2.7 с gcc компилятор меньше версии 4.2, но более новая версия Nodejs использует gcc44, поэтому вы получаете выше ошибки при установке любой библиотеки nodejs.

Так что вам нужно ухудшить версию nodejs и node-gyp и указать версию python, если у вас есть несколько версий python, установленных в вашей системе, и вы больше не сможете превышать ошибку.

Click here to see full tutorial

Смежные вопросы