docs dla CMake 3.2.2 stanie, że możliwe jest użycie wyrażeń generatora do podpisu install(<FILES|PROGRAMS> ...)
. Starałem się używać wyrażeń generatora innymi podpisami install()
, ale najwyraźniej to nie działa. Chciałbym zrobić coś takiego:Generator Expression do zainstalowania() nakazuje
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/$<CONFIG>"
LIBRARY DESTINATION "Lib/$<CONFIG>"
ARCHIVE DESTINATION "Lib/$<CONFIG>"
Próbowałem też dzwoniąc install()
wielokrotnie tak:
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/Debug" CONFIGURATIONS Debug
LIBRARY DESTINATION "Lib/Debug" CONFIGURATIONS Debug
ARCHIVE DESTINATION "Lib/Debug" CONFIGURATIONS Debug
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/Release" CONFIGURATIONS Release
LIBRARY DESTINATION "Lib/Release" CONFIGURATIONS Release
ARCHIVE DESTINATION "Lib/Release" CONFIGURATIONS Release
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/MinSizeRel" CONFIGURATIONS MinSizeRel
LIBRARY DESTINATION "Lib/MinSizeRel" CONFIGURATIONS MinSizeRel
ARCHIVE DESTINATION "Lib/MinSizeRel" CONFIGURATIONS MinSizeRel
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo
LIBRARY DESTINATION "Lib/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo
ARCHIVE DESTINATION "Lib/RelWithDebInfo" CONFIGURATIONS RelWithDebInfo
Powoduje CMake emitować błąd wzdłuż linii Target „foo” eksportowanych więcej niż raz w „fooConfig”.
Nie mogę korzystać CMAKE_BUILD_TYPE
tutaj albo bez aktualizowania pamięci podręcznej CUpewnij i ponowne przeprowadzenie kompilacji. Zamiast tego chcę użyć funkcji batch-build Visual Studio, która buduje dla mnie wiele konfiguracji.
Byłem trochę hack, że próbowałem też. Zauważyłem, że generowane INSTALL
CWprowadä projekt jest po prostu powołując skrypt CUpewnij ${CMAKE_BINARY_DIR}/cmake_install.cmake
z argumentem -DBUILD_TYPE=$(Configuration)
. Tak więc próbowałem:
install(TARGETS foo EXPORT fooConfig
RUNTIME DESTINATION "Bin/\${BUILD_TYPE}"
LIBRARY DESTINATION "Lib/\${BUILD_TYPE}"
ARCHIVE DESTINATION "Lib/\${BUILD_TYPE}"
To faktycznie działało dobrze dla instalacji. Jednak zainstalowany skrypt eksportu, tj. Plik wyjściowy install(EXPORT fooConfig DESTINATION .)
, teraz próbuje również użyć , który nie jest ustawiony w momencie, w którym użytkownik zawiera ten skrypt ...
Jeśli ktoś zna inny sposób osiągnięcia moich celów, proszę ja wiem.
Spodziewałem się, że muszę zrobić coś takiego ... Szkoda, że CMake nie obsługuje czegoś takiego. W ich systemie śledzenia problemów zauważyłem, że ostatnio zaimplementowano wyrażenia generujące dla argumentów DESTINATION wszystkich podpisów install(), ale nie ma jeszcze oficjalnego wydania z tą funkcją. Tak więc dla przyszłych użytkowników: ostatnie wersje CMake (> 3.2.2) prawdopodobnie już obsługują wyrażenia generatora dla innych sygnatur niż instalacyjnych (PLIKI). – Manuzor