2013-08-08 2 views
19

В настоящее время я разрабатываю настольное приложение, используя C++ REST SDK (кодовое имя Casablanca), Qt5 и некоторые другие библиотеки.CMake и MsVS-NuGet

Для настройки проекта я использую CMake.

Как получить CMake для установки пакетов NuGet?

Теперь я должен установить его каждый раз вручную, если я перезапущу CMake, что на самом деле не вариант.

+2

Это отличный вопрос, хотя я подозреваю, что на самом деле вы используете неправильный инструмент для работы. Если вы работаете с окнами, нет смысла использовать CMake. Единственная причина использовать CMake - быть mutli-платформой, но вы не можете много использовать пакеты NuGet. Конечно, я могу представить себе проект, в котором большинство из них многоплатформенны, но имеет определенный компонент для Windows, который нуждается в пакетах NuGet, и этот вопрос имеет смысл. –

+1

Я, однако, думаю, что вопрос должен был быть отправлен в Stack Overflow. –

+0

@JanHudec a) Да, я знаю это, но настройка проекта с помощью CMake является самой легкой из моих знаний при использовании библиотек, таких как Qt. б) как это? Разве это не слишком специфично для StackOverflow? –

ответ

15

Эталонная командная строка NuGet расположена на http://docs.nuget.org/docs/reference/command-line-reference

Вы можете установить пакеты, используя команду nuget install или nuget restore. nuget update обновляет установленные пакеты (restore должен выполняться beforhand).

Вы можете поручить CMake для запуска NuGet перед каждой сборки с помощью:

add_custom_command(TARGET ${PROJECT_NAME} 
    PRE_BUILD 
    COMMAND nuget restore ${CMAKE_BINARY_DIR}\yourSolution.sln 
) 

или во время конфигурации с помощью execute_process.

Вы можете подготовить конфигурационный файл nuget с помощью configure_file или использовать соответствующие команды nuget install.

+0

Я не думаю, что cmake захочет добавить nugets в решение, поэтому, возможно, нужен отдельный файл конфигурации или явная 'install'. Я также запустил бы установку во время настройки (через 'execute_process').Это немного проще, и IDE уже увидит доступные пакеты при запуске. –

+0

, хотя я бы хотел проверить это, я должен сказать, что я уже закрыл проект полгода назад ... (я также решил не использовать библиотеку, связанную с nuget) –

+0

может кто-нибудь отредактировать ответ и написать прямо oneliner? – Sergei