How can I make CMake use Mingw-w64 gcc/g++?

26,924

The simplest way to generate makefiles for MinGW (and MinGW-w64) is to use the appropriate CMake generator. Just call cmake with

-G "MinGW Makefiles"

no need to set DCMAKE_CXX_COMPILER and DCMAKE_C_COMPILER by hand.

For this to work, CMake must find your compilers. So this path must be added to the windows PATH variable, as CristiFati pointed out:

C:/MinGW-w64/mingw64/bin

To check if the PATH is correct, fire up a Windows command prompt and run

where gcc

The output should be (at least) the path you just added to the Windows PATH variable.

Share:
26,924
Leslie
Author by

Leslie

Updated on February 27, 2020

Comments

  • Leslie
    Leslie about 4 years

    I am on Windwos trying to get Mingw-w64 to work with CMake since my MSVC is somehow not working at all (using Windows10 64bit.

    Basically I add the arguments -DCMAKE_CXX_COMPILER="C:/MinGW-w64/mingw64/bin/g++.exe" -DCMAKE_C_COMPILER="C:/MinGW-w64/mingw64/bin/gcc.exe" to my call to CMake which sets the corresponding compiler.

    However I get these errors:

    -- The C compiler identification is unknown
    -- The CXX compiler identification is unknown
    -- Check for working C compiler: C:/MinGW-w64/mingw64/bin/gcc.exe
    -- Check for working C compiler: C:/MinGW-w64/mingw64/bin/gcc.exe -- broken
    CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/CMakeTestCCompiler.cmake:52 (message):
      The C compiler
    
        "C:/MinGW-w64/mingw64/bin/gcc.exe"
    
      is not able to compile a simple test program.
    

    How could I get this to work?

  • sancelot
    sancelot almost 5 years
    You hadditionally have to specify CMAKE_MAKE_PROGRAM to mingw32-make
  • Patafikss
    Patafikss about 3 years
    we specifically want to use mingw64, isn't that contradictory to set the make programe to mingw32? am I missing something?
  • Catradora
    Catradora about 3 years
    @Patafikss somewhat confusingly, mingw64 is invoked by calling mingw32. mingw32 is used to compile both 32-bit and 64-bit binaries.
  • AndreGraveler
    AndreGraveler about 2 years
    @sancelot you can make a batch program called make.bat that refer to mingw32-make.exe. Place this batch program in the MinGW bin folder. See Calling an executable by a different name