雪豹上的cmake设置

时间:2009-08-28 23:33:52

标签: macos osx-snow-leopard cmake

我正在尝试使用与Leopard上相同的CMakeLists.txt文件在Snow Leopard上编译我的项目,但编译失败并显示以下错误消息:

   Linking C executable cmTryCompileExec

  "/Applications/CMake 2.6-4.app/Contents/bin/cmake" -E cmake_link_script
  CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1

  /Developer/usr/bin/gcc -Wl,-search_paths_first -headerpad_max_install_names
  -fPIC CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o -o cmTryCompileExec


  ld: library not found for -lcrt1.10.5.o

  collect2: ld returned 1 exit status

  make[1]: *** [cmTryCompileExec] Error 1

似乎cmake的默认行为是在MACOSX上编译通用二进制文件,但Snow Leopard不再支持通用二进制文件,因此我们得到上述错误。有没有办法在Mac上使用cmake只生成英特尔二进制文件时禁用链接到-lcrt1.10.5.o?

2 个答案:

答案 0 :(得分:2)

尽管CMAKE_OSX_ARCHITECTURES设置为i386,但这似乎是cmake编译x86_64二进制文件的错误。

http://public.kitware.com/Bug/view.php?id=9466

作为临时解决方法,我正在使用

CMAKE_OSX_ARCHITECTURES = i386; ppc

答案 1 :(得分:2)

另一个临时解决方法是将以下内容传递给CMake:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32

这告诉GCC编译32位二进制文​​件,并且不需要像上面那样编译ppc二进制文件。