2016-01-14 57 views
0

我試圖編譯CMake的Linux上的EC2 AMI用下面的命令通-std = C++ 11作爲CMake的

/bootstrap --prefix=${MYDIR} 
cmake -DCMAKE_C_COMPILER=/home/mybin/bin/gcc -DCMAKE_CXX_COMPILER=/home/mybin/bin/g++ -DCMAKE_INSTALL_PREFIX=${MYDIR} 
make 

,並正在以下錯誤

#error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. 

編譯器選項在-std=c++11 -std=gnu++11上搜索信息後,我仍然無法找到如何設置這些標誌。我找到了在makefile中添加標誌的參考,但我不想去觸及它。

我在哪一行添加標誌?是bootstrap,cmake還是make,&如何具體的語法是什麼。我曾嘗試只爲每個都添加-std=c++11 or -std=gnu++11而沒有運氣。

GCC 5.3.0正在使用

+1

如果我沒有記錯的名字,像'CMAKE_CXX_FLAGS = -std = C++ 11'應該工作。 –

+0

@JoachimIsaksson,這是一個很好的幫助,我添加了-DCMAKE_CXX_FLAGS = -std = C++ 11'到cmake選項並且工作。非常感謝。 –

回答

2

從約阿希姆的意見是正確的,這樣的一個標誌會的工作,但是看一下官方說明......他們說出所有你需要的是這樣的:

./bootstrap --prefix=${MYDIR} && make && make install 

或者使用cmake。不是都。如果你打算使用cmake,我會強烈建議在繼續閱讀之前閱讀man cmake

作爲一個方面說明,不要編譯,除非你絕對必須。 CMake甚至不提供源代碼壓縮包,他們希望你直接從源代碼樹中提取。請使用您的發行版提供的軟件包(首選)或使用CMake提供的官方二進制文件。

0

如果你不希望添加-DCMAKE_CXX_FLAGS = -std = C++ 11在命令行,但更喜歡使用的CMakeLists.txt,嘗試:

if(COMPILER_SUPPORTS_CXX11) 
    set(CMAKE_REQUIRED_FLAGS "-std=c++11") 
endif() 

add_library(<library_name_you_like>, INTERFACE) 
target_compile_options(<library_name_you_like> INTERFACE ${CMAKE_REQUIRED_FLAGS}) 

上面的代碼後,你現在有一個圖書館與c + + 11支持。

你可以library_name_you_like鏈接到任何庫/可執行程序,如:

target_link_libraries(<library_or_executable> <library_name_you_like>) 
相關問題