Т.е. я из симейка вызываю custom_command, которая собирает для меня стороннюю библиотеку. Эту библиотеку я хочу упаковать в дебку
Нет, с полпинка не завелось :( Примерно такой кусок add_custom_target(FOO_LIB ALL DEPENDS ${FOO_STATIC_LIB}) add_custom_command(OUTPUT ${FOO_STATIC_LIB} COMMAND meson ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} && ninja -C ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Building external lib") add_library(libfoo STATIC IMPORTED) set_property(TARGET libfoo PROPERTY IMPORTED_LOCATION ${FOO_STATIC_LIB}) install(TARGETS libfoo ARCHIVE DESTINATION "/usr/lib" PUBLIC_HEADER DESTINATION "/usr/include") Вызывает такую ошибку cmake: CMake Error at CMakeLists.txt:29 (install): install TARGETS given target "libfoo" which does not exist. Видимо install targets не работает с импортированными таргетами. А без install непонятно как сообщить cpack о том, чтобы он либу и хидеры положил в пакет
https://github.com/avm-energo/coma/blob/master/src/AVM-Service/CMakeLists.txt#L80 вот, там QXlsx импортированная либа. Второй момент, что всё это фаза генерации а не конфигурации, поэтому многие переменные там просто не существуют, и их надо туда прокинуть (пример https://github.com/avm-energo/coma/blob/master/src/AVM-Service/CMakeLists.txt#L60). Вообще там более хитрая штука сделана, т.е. он копируют только зависимость указанного EXECUTABLES $<TARGET_FILE: но не суть
Так а что мешает взять то, что вы пишете в IMPORTED_LOCATION, и установить его через install (FILES…), или install (PROGRAMS…) (последнее - если нужен в итоге executable bit на файле)
В конечном итоге так и сделал
Обсуждают сегодня