Мне сложно сгенерировать двоичный файл, развернутый с необходимыми разделяемыми библиотеками.
Я создал «привет мир» для подключаемых модулей Qt 5.12, приложение работает должным образом на моем компьютере с Ubuntu 18.04, но make install
дает ошибку.
Я пробовал подход fixup_bundle()
для разрешения зависимостей.
наб .: Никогда раньше не делал, я новичок в cmake
.
cmake_minimum_required(VERSION 3.17)
project(plug-use LANGUAGES CXX)
set(PROJECT_VERSION_MAJOR 1)
set(PROJECT_VERSION_MINOR 0)
set(PROJECT_VERSION_PATCH 0)
set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
get_target_property(QT_WIDGETS_LIB Qt5::Widgets LOCATION)
get_filename_component(QT_RUNTIME_DIR "${QT_WIDGETS_LIB}" DIRECTORY)
list(APPEND LIBS_PATH "${QT_RUNTIME_DIR}")
message(path: ${LIBS_PATH})
add_subdirectory(plug)
add_executable(plug-use
main.cpp
MainWindow.cpp
MainWindow.h
MainWindow.ui
GenericPluginInterface.h
)
target_link_libraries(plug-use PUBLIC Qt5::Widgets plug)
set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/../installation)
include(GNUInstallDirs)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}_export_target
BUNDLE DESTINATION ${CMAKE_INSTALL_PREFIX}
COMPONENT ${PROJECT_NAME}_RunTime
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT ${PROJECT_NAME}_RunTime
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT ${PROJECT_NAME}_RunTime
NAMELINK_COMPONENT ${PROJECT_NAME}_Development
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
COMPONENT ${PROJECT_NAME}_Development
)
set( APPS "\${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}" )
set( DIRS ${LIBS_PATH})
install( CODE "
include(BundleUtilities)
fixup_bundle( \"${APPS}\" \"\" \"${DIRS}\" )
" COMPONENT ${PROJECT_NAME}_RunTime)
В терминале набираю:
cmake -B build -S .
cd build
make
make install
И сообщение об ошибке после make install
:
-- Install configuration: ""
-- Installing: /media/storage/user/Documents/mitk-test/plug-use/../installation/bin/plug-use
-- Set runtime path of "/media/storage/user/Documents/mitk-test/plug-use/../installation/bin/plug-use" to ""
-- fixup_bundle
-- app='/media/storage/user/Documents/mitk-test/plug-use/../installation/plug-use'
-- libs=''
-- dirs='/usr/lib/x86_64-linux-gnu'
-- ignoreItems=''
-- warning: *NOT* handled - directory/file does not exist...
CMake Error at /usr/local/share/cmake-3.17/Modules/BundleUtilities.cmake:988 (message):
error: fixup_bundle: not a valid bundle
Call Stack (most recent call first):
cmake_install.cmake:68 (fixup_bundle)
-- fixup_bundle: done
Makefile:137: recipe for target 'install' failed
make: *** [install] Error 1
Я не знаю, как интерпретировать это сообщение.