2015-11-18 6 views
12

Я оцениваю CLion 1.2.1 в существующем проекте, который уже использует CMake. Проект состоит из нескольких библиотечных модулей и одного исполняемого файла.Как заставить CLion запускать цель установки

Я инсталляционный цель, который я использую, чтобы собрать исполняемый файл и файл конфигурации вместе в папку бен для отладки:

... 
install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_BINARY_DIR}/bin/) 
install(FILES config.xml DESTINATION ${CMAKE_BINARY_DIR}/bin/) 

При создании в командной строке я бы просто запустить:

make install 

который, как ожидалось, создает двоичные файлы и в случае успеха запускает указанные выше команды установки.

Моя проблема заключается в том, что я не могу заставить CLion запустить цель «установить». Я ожидал, что смогу создать новую конфигурацию Run/Debug, но раскрывающийся список Target: содержит только те цели, которые добавлены с помощью add_executable() и add_library().

Я также попытался добавить 'install' к параметрам Build в диалоговом окне настроек. Тем не менее, он запускает установку для каждой цели, включая «чистый», что является неправильным.

+0

Вопрос об этом https://youtrack.jetbrains.com/issue/CPP-838 – KindDragon

ответ

16

UPDATE: По 2018.1 EAP, build 181.3741.16, CLion поддерживает работу cmake install если ваш проект определяет установки цели:


Оригинал Ответ:

Я не думаю, что CLion реализует эту функцию. Тем не менее, вы можете обойти это ограничение, добавив CMake «собственная цель» (с использованием add_custom_target()), который будет выполнять make install команды:

add_custom_target(install_${PROJECT_NAME} 
        $(MAKE) install 
        DEPENDS ${PROJECT_NAME} 
        COMMENT "Installing ${PROJECT_NAME}") 

Теперь, все, что вам нужно сделать, это «построение» install_YOUR_PROJECT_NAME цели из меню «Цели» в CLion.

Update:

Более метод кросс-платформенный может быть следующее:

add_custom_target(install_${PROJECT_NAME} 
        "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target install 
        DEPENDS ${PROJECT_NAME} 
        COMMENT "Installing ${PROJECT_NAME}") 
Смежные вопросы