破碎CMake和GCC下OS X(Broken CMake and GCC under OS X)

2019-09-02 09:29发布

当运行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>

通过观察论坛等在互联网上,我已经建立,这可能是与我的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,我认为,海湾合作委员会问题,必须在相同的排序时间如雨后春笋般涌现。 出了什么问题我的系统安装这个正在发生?


一些更多的细节。 由指定的构建计划CMAKE_MAKE_PROGRAM/opt/local/bin/gmake

我还发现,运行时,这些错误仅抛出Configurecmake-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过程。

Answer 1:

关于你的问题的一些意见,这可能导致你的解决方案...

您正在使用的CMake 2.8.2,这是相当古老,据CMake的版本去。 与2.8.11尝试还是看即将到来的2.8.12的候选版本,如果问题仍然存在。 如果不出意外,也许你会得到一个更好的错误消息。

看到这个问题,答案及链接查看关于保证一致的各种方式PATH命令行环境,并通过Mac上的其他手段发动GUI应用程序之间的值: 如何设置在OS X全局PATH环境变量?

CMake的GUI,你在你的终端看,除非你从终端以开放的命令来启动它不一定继承相同的路径值。

其他两件事情我蹦出这里: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了很多东西。 尽量减少使用路径值在构建环境将大有帮助你避免这样的问题。 我衷心建议剥离下来到你所需要的,至少在软件构建环境的最低限度。

对不起,不回答的答案,但有一点评论似乎有点过分了堆栈溢出评论... :-)



Answer 2:

我也碰到这个问题,我已经设置了正确的固定它CXXFLAGS以及CPPFLAGS 。 我想你也应该检查一下。

一个简单的解决办法是:

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

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



文章来源: Broken CMake and GCC under OS X
标签: c gcc cmake