CMake发现错误的gcc版本

时间:2015-02-24 12:40:11

标签: c++ gcc cmake version

我的问题很简单:如果我查看gcc版本,我会获得4.5.1,但CMake会找到gcc 4.5.0

> /usr/bin/gcc --version
gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
Copyright (C) 2010 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.
> mkdir BUILD & cd BUILD
> cmake ..
-- The C compiler identification is GNU 4.5.0
-- The CXX compiler identification is GNU 4.5.0
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- The Fortran compiler identification is GNU
-- Check for working Fortran compiler: /usr/bin/gfortran
-- Check for working Fortran compiler: /usr/bin/gfortran  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/bin/gfortran supports Fortran 90
-- Checking whether /usr/bin/gfortran supports Fortran 90 -- yes

谁错了? CMake或Gcc?

我使用cmake 2.8.9,但我也有cmake 3.1.0的错误。

我没有gcc 4.7.2,4.4.7和4.1.2的错误。

3 个答案:

答案 0 :(得分:1)

CMake使用/usr/bin/c++可能这仍然指向gcc 4.5.0。如果要设置编译器,请将-DCMAKE_CXX_COMPILER添加到您喜欢的编译器中。

答案 1 :(得分:1)

回答我自己的问题。

实际上,gcc 4.5.1似乎有一个错误,因为在我的工作站上使用gcc 4.5.1编译时,以下简单代码(根据官方文档正确:https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html)打印4.5.0。 / p>

#include <iostream>
int main(int argc, char** argv)
{
  std::cout << __GNUC__ << "." << __GNUC_MINOR__ << "." << __GNUC_PATCHLEVEL__ << std::endl;
  return 0;
}

答案 2 :(得分:1)

我发现的解决方案与@ usr1234567类似,基本上CMake使用ccc++,只要它们离$PATH不对,这与gcc并不总是相同或g++

指定这些编译器会修复CMake显示的版本:

cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ ..