web-dev-qa-db-ja.com

CMakeでコンパイラを指定できません

このCMakeLists.txtファイルに問題があります:

cmake_minimum_required(VERSION 2.6)

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)
SET(CMAKE_CXX_COMPILER C:/MinGW/bin/g++)

project(cmake_test)

add_executable(a.exe test.cpp)

cmake -G "MinGW Makefiles"でcmakeを呼び出すと、次の出力で失敗します。

c:\Users\pietro.mele\projects\tests\buildSystem_test\cmake_test>cmake -G "MinGW Makefiles" .
-- The C compiler identification is GNU 4.6.1
-- The CXX compiler identification is GNU 4.6.1
-- Check for working C compiler: C:/MinGW/bin/gcc
CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: Internal CMake error, TryCompile configure of cmake failed
-- Check for working C compiler: C:/MinGW/bin/gcc -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "C:/MinGW/bin/gcc" is not able to compile a simple test
  program.

CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:10 (project)

CMake Error: your C compiler: "C:/MinGW/bin/gcc" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: "C:/MinGW/bin/g++" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
-- Configuring incomplete, errors occurred!

ただし、gccコンパイラはC:/MinGW/bin/にあり、動作します。

何か案が?

プラットフォーム:

  • Windows 7
  • MinGW/GCC 4.6
37
Pietro

CMakeLists.txtファイルでコンパイラを設定しようとしないでください。

別のコンパイラーの使用方法については、CMake FAQを参照してください。

https://gitlab.kitware.com/cmake/community/wikis/FAQ#how-do-i-use-a-different-compiler

(メソッド#3を試行しており、FAQが「(avoid)」と言っていることに注意してください...)

最初の構成に別のコンパイラーが使用されたときに問題が発生し、CMakeListsファイルが変更されて別のコンパイラーを設定しようとするため、「CMakeListsで」手法を避けることをお勧めします。 CMakeを実行している開発者の好みに応じて、複数のコンパイラを使用する必要があります。

最良の方法は、ビルドツリーでCMakeを初めて呼び出す前に、環境変数CCおよびCXXを設定することです。

CMakeは使用するコンパイラを検出すると、CMakeCache.txtファイルに保存します。これらの変数が環境から消えても、適切なビルドシステムを生成できます。

コンパイラを変更する必要がある場合は、新しいビルドツリーから開始する必要があります。

62
DLRdave

Pietroと同様の問題がありましたが、

私はウィンドウ10で「Git Bash」を使用しています。 >> cmake -G "MinGW Makefiles"を実行しようとしましたが、Pietroと同じエラーが発生しました。

次に、>> cmake -G "MSYS Makefiles"を試しましたが、環境を正しく設定する必要があることに気付きました。

必ずC:\ MinGW\msys\1.0\binにパスを設定し、そこにgcc.exeがあるかどうかを確認してください。 gcc.exeがない場合は、C:/MinGW/bin/mingw-get.exeを実行し、MSYSからgccをインストールする必要があります。

その後、それは私のためにうまくいきます

4
junghyun jun

FILEPATHオプションを使用すると機能する場合があります。

set(CMAKE_CXX_COMPILER:FILEPATH C:/MinGW/bin/gcc.exe)
2
adem

同じ問題がありました。そして私の場合、修正は非常に簡単でした。秘Theは、コンパイラパスに「.exe」を追加するだけです。だから、代わりに:

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc)

そのはず

SET(CMAKE_C_COMPILER C:/MinGW/bin/gcc.exe)

同じことがg ++にも当てはまります。

0
Joel