2017-10-24 5 views
0

コンパイル時にフラグを追加するには、gtestの設定に助けが必要です。GTakeを使うためにCMakeでコンパイラフラグを渡すには

warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11

マイCMakeListsファイルは次のようになります:

:それはこのチュートリアルを使用して作成された

cmake_minimum_required(VERSION 2.6) 

find_package(GTest REQUIRED) 

include_directories(${GTEST_INCLUDE_DIRS}) 

add_executable(runTests tests.cpp) 

target_link_libraries(runTests ${GTEST_LIBRARIES} pthread)\ 

現在、私はこの警告を取得しています

この警告を満たすために-std = C++ 11フラグを追加しますか?

答えて

0

は、明示的な機能の設定:

target_compile_features(runTests PUBLIC cxx_range_for) 

または特定の標準(私の知る限り以来、CMakeのバージョン3.8.2)を活性化:

target_compile_features(runTests PUBLIC cxx_std_11) 

完全な機能リストはhereです。

0

この問題に対処する方法はいくつかあります。サイドノート、あなたは実際2.6のバージョンのCMakeを使っていますか?それとも、下位互換性のためにあなたの環境で使用する必要がありますか?

最初のオプション:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") 
set(${PROJECT_NAME}_CXX_FLAGS "${${PROJECT_NAME}_CXX_FLAGS} -std=c++11") 
set(${PROJECT_NAME}_CMAKE_CXX_FLAGS "${${PROJECT_NAME}_CMAKE_CXX_FLAGS} -std=c++11") 

や、あなたのコンパイラがそれをサポートしていない場合は、あなたの代わりに-std=c++0xを使用することができます。

また、あなたはあなたのコンパイラは、1つまたは他のをサポートしているかどうかを確認するには、次のコードを使用することができます。これは出力があなたのCOMPILER_SUPPORTS_CXX11変数にブール値でしょう、そしてあなたはさらにそれをテストし、あなたのフラグを設定することができ

include(CheckCXXCompilerFlag) 
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) 

それに応じて。

第2のオプションは、CMAKE_CXX_STANDARD変数as described in documentationを使用することです。また、これは(this doc以下)ターゲット上の別のプロパティとして使用することができます。

set_property(TARGET tgt PROPERTY CXX_STANDARD 11) 
関連する問題