使用Mingw-w64编译Google测试 [英] Compiling Google test with Mingw-w64

查看:163
本文介绍了使用Mingw-w64编译Google测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在Windows 10计算机中使用Mingw-w64编译Google Test,但始终会收到错误消息:

I'm trying to compile Google Test with Mingw-w64 in a Windows 10 machine but I always get the error:

C:\git\tdd\googletest>cmake CMakeLists.txt -G "MinGW Makefiles"
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

这就是我在做什么:

  1. 打开Windows CMD终端并更改我下载google test的文件夹t
  2. 将CMake,make和g ++添加到路径set PATH="C:\Program Files\CMake\bin";"C:\msys\bin";"C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin";%PATH%
  3. 使用cmake CMakeLists.txt -G "MinGW Makefiles"
  4. 运行CMake
  1. Open a Windows CMD terminal and change folder t where I downloaded google test
  2. Add CMake, make and g++ to the path set PATH="C:\Program Files\CMake\bin";"C:\msys\bin";"C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin";%PATH%
  3. Run CMake with cmake CMakeLists.txt -G "MinGW Makefiles"

这些是工具的版本:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-msys

  • cmake版本3.15.3
  • g ++(i686-posix-dwarf-rev0,由MinGW-W64项目构建)8.1.0
  • 使来自此处

    非常感谢您的帮助!

    CMake/MinGW未知的编译器,gcc.exe损坏,都没有解决方案.

    我还尝试使用环境变量来告诉CMake使用哪些工具.

    I also tried using environment variables to tell CMake which tools to use.

    1. 将工具的文件夹添加到PATH:

    set PATH="C:\Program Files\CMake\bin";"C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin";%PATH%

    1. 通过调用CMake

    cmake -DCMAKE_C_COMPILER="C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gcc" -DCMAKE_CXX_COMPILER="C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++" -DCMAKE_MAKE_PROGRAM="C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/mingw32-make.exe" CMakeLists.txt -G "MinGW Makefiles"

    我收到此错误:

    -- The C compiler identification is unknown
    -- The CXX compiler identification is unknown
    CMake Error at CMakeLists.txt:10 (project):
      The CMAKE_C_COMPILER:
    
        C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/gcc
    
      is not a full path to an existing compiler tool.
    
      Tell CMake where to find the compiler by setting either the environment
      variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
      the compiler, or to the compiler name if it is in the PATH.
    
    
    CMake Error at CMakeLists.txt:10 (project):
      The CMAKE_CXX_COMPILER:
    
        C:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++
    
      is not a full path to an existing compiler tool.
    
      Tell CMake where to find the compiler by setting either the environment
      variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
      to the compiler, or to the compiler name if it is in the PATH.
    
    
    -- Configuring incomplete, errors occurred!
    See also "C:/git/tdd/googletest/CMakeFiles/CMakeOutput.log".
    See also "C:/git/tdd/googletest/CMakeFiles/CMakeError.log".
    

    由于g ++和gcc在PATH中,因此我也尝试像这样调用CMake:

    As g++ and gcc are in the PATH, I also tried to call CMake like so:

    cmake -DCMAKE_C_COMPILER="gcc" -DCMAKE_CXX_COMPILER="g++" -DCMAKE_MAKE_PROGRAM="mingw32-make.exe" CMakeLists.txt -G "MinGW Makefiles"

    产生与上一次尝试相同的错误:

    Which yields the same error as the previous try:

    -- The C compiler identification is unknown
    -- The CXX compiler identification is unknown
    CMake Error at CMakeLists.txt:10 (project):
      The CMAKE_C_COMPILER:
    
        gcc
    
      is not a full path and was not found in the PATH.
    
      Tell CMake where to find the compiler by setting either the environment
      variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
      the compiler, or to the compiler name if it is in the PATH.
    
    
    CMake Error at CMakeLists.txt:10 (project):
      The CMAKE_CXX_COMPILER:
    
        g++
    
      is not a full path and was not found in the PATH.
    
      Tell CMake where to find the compiler by setting either the environment
      variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
      to the compiler, or to the compiler name if it is in the PATH.
    
    
    -- Configuring incomplete, errors occurred!
    See also "C:/git/tdd/googletest/CMakeFiles/CMakeOutput.log".
    See also "C:/git/tdd/googletest/CMakeFiles/CMakeError.log".
    

    但是,我 CAN 拨打g++:

    C:\git\tdd\googletest>g++
    g++: fatal error: no input files
    compilation terminated.
    

    再次感谢!

    推荐答案

    您的原始问题源于对MSYS2使用 make.exe 的选择. 以及该版本的 make.exe 不支持的MinGW-w64编译器.与MinGW-w64一起使用的正确程序是 mingw32-make.exe ,它是MinGW-w64发行版的一部分.我不能完全遵循您以后的修改,但是例如在 cmd.exe :

    Your original problems stem from the choice of using make.exe for MSYS2 together with the MinGW-w64 compiler, which is not supported by that version of make.exe. The correct program to use with MinGW-w64 is mingw32-make.exe, which is part of the MinGW-w64 distribution. I am not fully able to follow your later edits, but for instance this works perfectly well in cmd.exe:

    set "PATH=C:\Program Files\CMake\bin;%PATH%"
    set "PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH%"
    
    cmake ^
        -G "MinGW Makefiles" ^
        -D CMAKE_C_COMPILER=gcc.exe ^
        -D CMAKE_CXX_COMPILER=g++.exe ^
        -D CMAKE_MAKE_PROGRAM=mingw32-make.exe ^
        .
    
    mingw32-make.exe
    

    在这里,我用过

    • CMake 3.15.2,
    • MinGW-w64 8.1.0(
    • CMake 3.15.2,
    • MinGW-w64 8.1.0 (x86_64-8.1.0-posix-seh-rt_v6-rev0),
    • and current git revision of Google Test.

    这篇关于使用Mingw-w64编译Google测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆