2016-05-06 15 views
0

私はmlpack-2.0.1をVisual Studio 14 2015(私はWindowsを使用しています)で動作させようとしていますが、何の成功もなく、何時間も試していますが、 : "No C++ 11 compiler available!"さらに、私はStack Exchangeで他にも同様の問題をいくつか読んだことがありますし、誰もそのトリックをやっていません。私はVS 2015を何ヶ月も何の誤りもなく使ってきたので混乱しています。それは私がそこにいくつかのコンパイラの設定を変更し、それを知っていない可能性がありますか?私はビジュアルスタジオをアンインストールして再インストールする必要がありますか?私はCMakeの3.5.2ダウンロードしたし、そのディレクトリがある(.exeが\ビンサブフォルダにある):CMakeエラー "No C++ 11 compiler available!" MS VS 2015

C:\Users\owner\Desktop\C++\ 

C:\Program Files (x86)\CMake\ 

mlpack-2.0.1用CMakeLists.txtファイルが中に発見されました

私はCMakeのGUIとコマンドプロンプトを使用してこれを動作させようとしましたが、そのジョブを実行できませんでした。私はCMakeのコードを変更することでそれほど洗練されたものではないので、どんな助けにも感謝します。誰が何をすべきか知っていますか?

答えて

1

あなたはmlpackに問題があります。特にCMakeの/ CXX11.cmakeで

cmake_minimum_required(VERSION 2.8.5) 
    project(mlpack C CXX) 

    # Ensure that we have a C++11 compiler. 
    include(CMake/CXX11.cmake) 
    check_for_cxx11_compiler(HAS_CXX11) 
    if(NOT HAS_CXX11) 
     message(FATAL_ERROR "No C++11 compiler available!") 
    endif(NOT HAS_CXX11) 
    enable_cxx11() 

を:

macro(check_for_cxx11_compiler _VAR) 
     message(STATUS "Checking for C++11 compiler") 
     set(${_VAR}) 
     if((MSVC AND (MSVC10 OR MSVC11 OR MSVC12)) OR 
      (CMAKE_COMPILER_IS_GNUCXX AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.6) OR 
      (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.1) OR 
      (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 12.0)) 
      set(${_VAR} 1) 
      message(STATUS "Checking for C++11 compiler - available") 
     else() 
      message(STATUS "Checking for C++11 compiler - unavailable") 
     endif() 
    endmacro() 

ですから、条件にMSVC14を追加する必要があります。

macro(check_for_cxx11_compiler _VAR) 
     message(STATUS "Checking for C++11 compiler") 
     set(${_VAR}) 
     if((MSVC AND (MSVC10 OR MSVC11 OR MSVC12 OR MSVC13 OR MSVC14)) OR 
      (CMAKE_COMPILER_IS_GNUCXX AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4.6) OR 
      (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 3.1) OR 
      (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 12.0)) 
      set(${_VAR} 1) 
      message(STATUS "Checking for C++11 compiler - available") 
     else() 
      message(STATUS "Checking for C++11 compiler - unavailable") 
     endif() 
    endmacro() 

はこれを試してみてください。

+1

これは、次のVisual Studioバージョンで再び機能しなくなります。あなたに責任を負うことはありませんが、これはmlpack側のちょっとした考え方です。最高でも、未知のコンパイラは警告でなければなりません。 – MSalters

+1

@MSalters:合意しました。最良の解決策は、プロジェクト定義の中でコンパイラをチェックしないことです。 – AnatolyS

+0

これは、 "No C++ 11 compiler available!" "バックトレースを見つけられませんでした(Backtrace_LIBRARY Backtrace_INCLUDE_DIR)"と "ARMADILLO_INCLUDE_DIR-NOTFOUND/armadillo_bits/config.hppが見つかりませんでした!リンク先を決定できません"というエラーメッセージが表示されます。 – Jeremy

関連する問題