buildbot и cmake не могут создать генератор vs2010 - PullRequest
1 голос
/ 31 января 2011

Я монтирую платформу непрерывной интеграции с помощью buildbot, проект использует cmake для создания решения Visual Studio 2010.

для целей тестирования я использую Windows Dev VM для buildslave, cmake умирает со странной ошибкой

Ошибка CMake: не удалось создать именованный генератор "Visual Studio 10"

но если я сделаю ручной cmake, он будет работать нормально

cmake -G "Visual Studio 10" источник

Конфигурация этого buildslave:

factoryWin = BuildFactory()
factoryWin.addStep(SVN(svnurl=repo_url, mode='copy', username=svn_user, password=svn_passwd))
factoryWin.addStep(ShellCommand(command=['cmake', '-G"Visual Studio 10"', 'source']))


c['builders'].append(
BuilderConfig(name="runtests-win",
slavenames=["win-slave"],
factory=factoryWin)

у вас есть идея?

Ответы [ 4 ]

6 голосов
/ 06 февраля 2011

Убедитесь, что вы не используете cygwin cmake случайно (на случай, если вы установили cygwin)

Этот не может собрать VS.

5 голосов
/ 10 октября 2012

В моей ситуации мне пришлось решать эту проблему с помощью переменной среды. Команда становится:

factoryWin.addStep(ShellCommand(command=['cmake', '-G%CMAKEGENERATOR%', 'source'],
     env={"CMAKEGENERATOR": "\"Visual Studio 10\""}))

Я думаю, что это мешает витому процессу выполнения манипулировать строкой. В моем случае я также хотел настроить командную среду Visual Studio, поэтому моя команда:

factoryWin.addStep(ShellCommand(command=["c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat", "x86",
     "&&", "cmake", "-G%CMAKEGENERATOR%", "..\\src"],
     env={"CMAKEGENERATOR": "\"Visual Studio 10\""}))

Очевидно, что мой относительный путь между моим каталогом сборки и каталогом src различен, но результат тот же, а именно решение Visual Studio, сгенерированное cmake.

2 голосов
/ 10 августа 2012

В вашем случае я думаю, что ваша проблема в том, что массив должен читать

['cmake', '-G', "Visual Studio 10", 'source']

, а не

['cmake', '-G"Visual Studio 10"', 'source']

Кавычки в сообщаемой ошибке являются частью строкии не являются оберткой.

1 голос
/ 15 октября 2013

Я не думаю, что ответ переменной среды обязательно должен считаться «лучшим» ответом.Это простая проблема - не использовать правильный формат для строки.

Этот синтаксис также можно использовать.['cmake', '-GVisual Studio 10', 'source']

Я написал класс CMakeCommand, который наследуется от ShellCommand, который позволяет ключевым словам указывать генератор и sourceDir.Это урезанная версия, в которой указываются только каталог генератора и источника, но его можно расширить, включив флаги CMake и т. Д.

...