【问题标题】:How do I correctly set a CMakeLists.txt file?如何正确设置 CMakeLists.txt 文件?
【发布时间】:2013-02-24 11:37:13
【问题描述】:

我有一个简单的 C++ 测试项目,我的 CMakeLists.txt 文件编写如下;

 cmake_minimum_required(VERSION 2.8)

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

 project(simpleTest)
 add_executable(main main.cpp)

当我尝试运行 CMake GUI 到 MinGW 的集合生成器时,我收到以下错误消息:

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:61 (message):
  The C compiler "C:/MinGW/bin/gcc" is not able to compile a simple test
  program.

  It fails with the following output:



  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:7 (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!

我在 Windows 7 64 位上,我在 cmd 上确认了这一点; G++ --version 提供 G++ (GCC) 4.6.1。

我做错了什么?

【问题讨论】:

    标签: c++ windows gcc cmake


    【解决方案1】:

    抱歉,编译器似乎没有安装在您指定的位置。另请参阅here 为什么应避免在 CMakeLists.txt 中设置编译器

    所以我会删除这些,清除 cmake 缓存,在调用 CMake 之前设置环境变量 CC 和 CXX,然后重试。

    【讨论】:

    • 您没有在 CMakeLists.txt 中设置编译器是对的,但是一次又一次地检查编译器安装在我指定的位置。
    • 您是否删除了这两行并清除了cmake缓存?我还补充说,您应该在调用 cmake 之前尝试设置环境变量
    【解决方案2】:

    我认为你的问题在于路径字符串。试试这个:

    set(CMAKE_C_COMPILER "C:\\MinGW\\bin\\gcc")
    set(CMAKE_CXX_COMPILER "C:\\MinGW\\bin\\g++")
    

    或者,您也可以在 CMake GUI 中设置编译器。单击生成后,选择“指定本机编译器”选项并设置或浏览到正确的位置。

    【讨论】:

    • 问题(正如我从其他建议中发现的)不是您指出的,而是 sh.exe 在我的系统路径中的事实。这也可以通过以下事实来证明:如果我将生成器设置为“MSYS Makefiles”,即使没有在 CMakeLists.txt 文件中设置 CMAKE_C_COMPILER 或 CMAKE_CXX_COMPiLER,它也可以工作。
    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2019-05-31
    • 2013-11-30
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多