我正在尝试使用与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?
答案 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二进制文件。