2013-10-24 2 views
2

Я новичок в разработке VS и Cmake. Я использовал CMake-GUI для создания визуального студийного решения и могу его успешно построить.cmake опция командной строки

Однако наш код достиг стадии, когда мы можем, наконец, построить ссылку & в двоичный код. С несколькими людьми, проверяющими код, мы хотим сделать ночную сборку, и поэтому я подумывал написать пакетный файл для этого.

Однако, я пытаюсь вызвать cmake из командной строки и запутываю проблемы.

В CMake-GUI для того, чтобы настроить, я обеспечиваю два значения Путь моего исходного кода путь, где файлы будут генерироваться

Однако, когда я пытаюсь запустить тот же через командную строку (с помощью следующая команда)

cmake -G "NMake Makefiles" -D CMAKE_SOURCE_DIR="D:\source_code" -D CMAKE_BINARY_DIR="D:\source_code\build\gen\host" 

CMake подбрасывает в EROR: каталог источника "D: \" файл не является каталогом.

Я тоже попробовал следующие варианты без везения

cmake -G "NMake Makefiles" -D PROJECT_SOURCE_DIR="D:\source_code" -D PROJECT_BINARY_DIR="D:\source_code\build\gen 

Может кто-то пожалуйста, руководство меня на правильный синтаксис.

Заранее спасибо

+0

Я думаю, это потому, что обратные косые обрабатываются как экранирующий carácter в CMake. Вы можете попробовать удвоить обратную косую черту: '\\' или работать со слэшами '/' – NoWiS

ответ

3

Вы не должны попробовать и установить любой из этих переменных в командной строке. Они автоматически устанавливаются CMake при первом просмотре CMakeLists.txt.

Вместо этого вы должны выполнить команду команды CMake из двоичного каталога и передать путь к каталогу, содержащему CMakeLists.txt верхнего уровня. Так что-то вроде:

cd D:\source_code\build\gen\host 
cmake -G"NMake Makefiles" D:\source_code 

Кстати, CMake в командной строке разбор не велик (например, см this answer). Я бы рекомендовал избегать оставлять пробелы после аргументов -D.

+0

, но когда я запускаю Cmake-GUI, я предоставляю значения «Where is the source» и «Where is the binary»? Как smack узнает, использую ли я командную строку? –

+3

Бинарный каталог подразумевается * где * вы выполняете команду CMake. Исходный dir передается в качестве аргумента команде CMake - в этом случае 'D: \ source_code'. – Fraser

+0

Кроме того, как только CMake запускается в первый раз, он создает файл кэша CMakeCache.txt в корне папки сборки. Последующие прогоны CMake могут быть просто заданы для этого корня сборки. Поэтому, если вы перезапустите CMake и все еще находитесь в корне сборки, вы можете просто «cmake.» (Все предыдущие аргументы '-D' кэшируются и не нуждаются в повторном наборе, если вы не хотите изменить их). – Fraser

1

Попробуйте

Удалить пространство между -D и параметром

cmake -G "NMake Makefiles" -DCMAKE_SOURCE_DIR="D:\source_code" -DCMAKE_BINARY_DIR="D:\source_code\build\gen\host" 
Смежные вопросы