2015-11-18 13 views
12

Oceniam CLION 1.2.1 dla istniejącego projektu, który już korzysta z CMake. Projekt składa się z kilku modułów bibliotecznych i jednego pliku wykonywalnego.Jak przekonwertować CLION do uruchomienia instalacji docelowej?

Mam zainstalowania tarczy, którą używam do zbierania i wykonywalny plik konfiguracyjny razem w folderze bin do debugowania:

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

Przy budowie linii poleceń bym po prostu uruchom:

make install 

który zgodnie z oczekiwaniami tworzy pliki binarne i jeśli się powiedzie, uruchamia powyższe polecenia instalacji.

Mój problem polega na tym, że nie mogę spowodować, że CLion uruchomi cel "instalacji". Oczekiwalem, że będę w stanie utworzyć nową konfigurację Run/Debug, ale rozwijana lista Target: zawiera tylko te cele dodane przy użyciu add_executable() i add_library().

Próbowałem również dodać "zainstaluj" do opcji kompilacji w oknie dialogowym Ustawienia. To jednak uruchamia instalację dla każdego celu, łącznie z "czystym", co nie jest poprawne.

+0

Problem ten temat https://youtrack.jetbrains.com/issue/CPP-838 – KindDragon

Odpowiedz

16

UPDATE: Od 2018.1 EAP, build 181.3741.16, Clion obsługuje uruchamianie cmake install jeśli projekt definiuje zainstalować cele:


Original Odpowiedź:

Nie sądzę, że CLION implementuje tę funkcję jeszcze. Można jednak obejść to ograniczenie przez dodanie „custom cel” CUpewnij (używając add_custom_target()), który będzie wykonywał polecenia make install:

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

Teraz, wszystko co musisz zrobić, to „budować” cel install_YOUR_PROJECT_NAME z menu "cele" w CLION.

Aktualizacja:

Bardziej technika cross-platform mogą być następujące:

add_custom_target(install_${PROJECT_NAME} 
        "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" --target install 
        DEPENDS ${PROJECT_NAME} 
        COMMENT "Installing ${PROJECT_NAME}")