Настройки cmake на снежном барсе - PullRequest
2 голосов
/ 29 августа 2009

Я пытаюсь скомпилировать свой проект на Snow Leopard, используя тот же файл CMakeLists.txt, который был у меня на 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 больше не поддерживает универсальные двоичные файлы, и, следовательно, мы получаем вышеуказанную ошибку. Есть ли способ отключить ссылки на -lcrt1.10.5.o при использовании cmake на Mac для генерации только двоичных файлов Intel?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2009

Другой временный обходной путь - передать CMake следующее:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32

Это указывает GCC на компиляцию 32-битных двоичных файлов и не требует компиляции двоичных файлов ppc, как указано выше.

2 голосов
/ 01 сентября 2009

Похоже, что это ошибка при компиляции cmake двоичных файлов x86_64, несмотря на то, что CMAKE_OSX_ARCHITECTURES установлен на i386.

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

В качестве временного решения я использую

CMAKE_OSX_ARCHITECTURES = i386; ppc

...