4

configurecmake-gui我的 OS X 平台上运行时,出现以下错误:

The C compiler identification is GNU
The CXX compiler identification is GNU
Checking whether C compiler has -isysroot
Checking whether C compiler has -isysroot - yes
Checking whether C compiler supports OSX deployment target flag
Checking whether C compiler supports OSX deployment target flag - yes
Check for working C compiler: /usr/bin/gcc-4.0
Check for working C compiler: /usr/bin/gcc-4.0 -- broken
CMake Error at /Applications/CMake 2.8-2.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "/usr/bin/gcc-4.0" is not able to compile a simple test
  program.

  It fails with the following output:

   Change Dir: /Users/bill/Desktop/cmake_test/build/CMakeFiles/CMakeTmp

  Run Build Command:/opt/local/bin/gmake "cmTryCompileExec/fast"

  /opt/local/bin/gmake -f CMakeFiles/cmTryCompileExec.dir/build.make
  CMakeFiles/cmTryCompileExec.dir/build

  gmake[1]: Entering directory
  `/Users/bill/Desktop/cmake_test/build/CMakeFiles/CMakeTmp'

  "/Applications/CMake 2.8-2.app/Contents/bin/cmake" -E cmake_progress_report
  /Users/bill/Desktop/cmake_test/build/CMakeFiles/CMakeTmp/CMakeFiles 1

  Building C object CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o

  /usr/bin/gcc-4.0 -isysroot -o
  CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o -c
  /Users/bill/Desktop/cmake_test/build/CMakeFiles/CMakeTmp/testCCompiler.c

  i686-apple-darwin10-gcc-4.0.1:
  CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o: No such file or
  directory

    <snip>

通过查看 Internet 上的论坛等,我确定这可能与我的 PATH 变量有关。这是我用于分析的 PATH 变量:

! echo $PATH
/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/sw/bin:/sw/sbin:/Applications/MATLAB_R2012a.app/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin:/usr/X11R6/bin

这个路径变量最近在我配置 Python 时发生了变化,我认为 GCC 问题一定是同时出现的。我的系统安装可能有什么问题导致这种情况发生?


更多细节。指定的构建程序CMAKE_MAKE_PROGRAM/opt/local/bin/gmake.

我还发现这些错误仅在运行时Configure抛出cmake-gui。在命令行上(cmake ..从构建文件夹运行),配置完成:

! cmake ..
-- The C compiler identification is GNU 4.0.1
-- The CXX compiler identification is GNU 4.2.1
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /usr/bin/gcc-4.0
-- Check for working C compiler: /usr/bin/gcc-4.0 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Checking whether CXX compiler has -isysroot
-- Checking whether CXX compiler has -isysroot - yes
-- Checking whether CXX compiler supports OSX deployment target flag
-- Checking whether CXX compiler supports OSX deployment target flag - yes
-- 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
-- Configuring done
-- Generating done

但是,在使用某些库时编译并不总是成功 - 例如,请参见我在这里提出的这个问题cmake因此,我认为在此过程中可能仍会出现问题。

4

2 回答 2

3

关于您的问题的一些观察,可能会导致您找到解决方案......

就 CMake 版本而言,您使用的是相当旧的 CMake 2.8.2。尝试使用 2.8.11 或即将发布的 2.8.12 的候选版本,看看问题是否仍然存在。如果不出意外,也许您会收到更好的错误消息。

请参阅此问题和答案及其链接,以了解PATH在 Mac 上通过其他方式启动的命令行环境和 GUI 应用程序之间保证值一致的各种方法:如何在 OS X 上设置全局 PATH 环境变量?

CMake GUI 不一定继承与您在终端中看到的相同的 PATH 值,除非您使用 open 命令从终端启动它。

我这里突然出现了另外两件事:GCC 4.0 是 C 编译器,但 g++ 4.2 是 C++ 编译器。为什么那些不同?

此外,CMAKE_MAKE_PROGRAM指向/opt/local/bin/gmake. 在您的两个构建树中都是这样吗?(命令行一和 GUI 一?)我觉得 CMake 会从 中获取 C 和 C++ 编译器/usr/bin,但 gmake 从/opt/local/bin...

您的命令行环境是否经过精心设置,可以从这些路径中准确使用这些工具?或者这也是你意想不到的?

您根本没有提及您使用的是什么版本的 Xcode 工具。也许将其添加到您的问题中将有助于更好的答案进入某人的大脑。

最后一个观察:你的 PATH 中有很多东西。最小化您在构建环境中使用的 PATH 值将大大有助于避免此类问题。我衷心建议将其剥离到您需要的最低限度,至少对于软件构建环境而言。

很抱歉没有回答,但是对于 Stack Overflow 评论来说,这么多评论似乎有点过分...... :-)

于 2013-09-09T20:46:09.070 回答
0

我也遇到了这个问题,我已经通过设置正确的CXXFLAGSand来解决它CPPFLAGS。我想你也应该检查一下。

一个简单的解决方案是:

CPPFLAGS := $(CPPFLAGS) $(CFLAGS) CXXFLAGS := $(CXXFLAGS) $(CFLAGS)

或者你应该检查你PATH的是否正确。您应该能够CXX在当前 shell 中找到编译器和 C 编译器。

于 2014-11-13T10:01:27.103 回答