2013-05-22 2 views
10

Это то, что я есть, когда я начиная поколение:CMake генерировать проект Xcode из существующих источников

iMac:IXCSoftswitch alex$ /usr/bin/cmake -G Xcode . 
-- CMAKE_SOURCE_DIR = /Users/alex/Desktop/ixc-v/IXCSoftswitch, CMAKE_BINARY_DIR = /Users/alex/Desktop/ixc-v/IXCSoftswitch 
CMake Error at CMakeLists.txt:25 (MESSAGE): 
    Binary and source directory cannot be the same 


-- Configuring incomplete, errors occurred! 

Как я могу это исправить? Я новичок в cmake, образцы оценили.

ответ

39

CMake используется для производства out-of-source сборных конструкций.

Идея состоит в том, что вы не смешиваете файлы, созданные во время компиляции, с исходными исходными файлами. На практике вы обычно запускаете CMake из нового пустого каталога сборки и указываете путь к исходному каталогу в качестве аргумента.

cd IXCSoftswitch 
mkdir build 
cd build 
cmake -G Xcode .. 

Все файлы, созданные с помощью CMake (который может быть много) теперь будет идти в подкаталог build, в то время как ваш исходный каталог остается чистым от сборки артефактов.

Концепция сборки вне источника может показаться странной, но на самом деле это очень удобный способ работы после того, как вы привыкнете к ней.

+0

похоже, что это решение, но я не могу найти окончательный проект Xcode, который включает в себя все исходные файлы. вы можете отредактировать ответ, где находится? – user170317

+0

Это определяется самим проектом. Я бы предложил вам проверить документацию, поставляемую с исходным кодом. – ComicSansMS

3

От корня каталога вашего проекта.

cmake -G Xcode -H. -B_build 

Это похоже на ответ выше. Тем не менее, вы вручную управляете построением источника. -B устанавливает ваш целевой каталог сборки (я предпочитаю _build). Я попытался посмотреть вверх -H, чтобы проверить, но не смог найти. Если память используется, она указывает, где живет ваш CMakeLists.txt.

Я сохраняю эту команду в файле .sh/.bat (в зависимости). Таким образом, я могу сохранить свои сценарии, которые строят мой проект в корне, где новый человек может их легко найти.

Смежные вопросы