這個問題是一個重復的問題。然而,在篩選了其他的帖子后,我仍然無法解決這個問題。我的問題是:當我試圖打包我的應用程式時,所以在我運行 cpack 之后,運行時的依賴項 Qt5Core.dll、Qt5Gui.dll、Qt5Network.dll、Qt5Svg.dll、Qt5Widgets.dll 被放置在目錄的根部,而可執行檔案和其余依賴項則位于 bin 檔案夾中。
我知道,我可以把 bin 檔案夾中的內容復制到根目錄中,這樣就可以了,但是不可以。
我的疑慮是,如果我把bin檔案夾的內容復制到根目錄下,就可以正常作業了。
我的懷疑并不確定,但我確實相信這個問題來自于使用include(GNUInstallDirs)。如果有人能提供一個解釋和解決方案。謝謝你
嘗試運行可執行檔案時的錯誤資訊。
這個應用程式無法啟動,因為沒有Qt平臺插件能夠被初始化! 在運行可執行檔案時出現錯誤資訊。重新安裝該應用程式可能會解決這個問題。
CMakeLists.txt
cmake_minimum_required(VERSION 3.11.0)
project(Translation_Verification VERSION 1.00 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt5 5.15 REQUIRED COMPONENTS Core Gui Network Widgets)
set(QONLINETRANSLATOR_VERSION 1.4.5)
include(FetchContent)
FetchContent_Declare(qonlinetranslator
GIT_REPOSITORY https://github.com/crow-translate/QOnlineTranslator.git。
git_tag ${qonlinetranslator_version}。
)
FetchContent_GetProperties(qonlinetranslator)
if(not qonlinetranslator_POPULATED)
FetchContent_Populate(qonlinetranslator)
add_subdirectory(${qonlinetranslator_SOURCE_DIR} ${qonlinetranslator_BINARY_DIR})
endif()
set(project_SOURCES
src/main.cpp
src/addlanguagedialog.cpp
src/addlanguagedialog.ui
src/verification.cpp
src/widgetwindow.ui
src/widetwgindow.cpp
)
include(GNUInstallDirs)
add_executable(Translation_Verification WIN32 ${PROJECT_SOURCES})
target_link_libraries(Translation_Verification QOnlineTranslator Qt5::Core Qt5::Gui Qt5::Network Qt5::Widgets)
install(TARGETS Translation_Verification RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
target_include_directories(Translation_Verification PUBLIC)
"${qonlinetranslator_BINARY_DIR}/src"。
"${qonlinetranslator_SOURCE_DIR}/src")
##CPack
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION)
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY)
set(CPACK_PACKAGE_NAME "Translation_Verification")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "翻譯驗證安裝")
set(CPACK_PACKAGE_VERSION "1.0.0") # 安裝程式的版本
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
install(FILES ${CMAKE_SOURCEDIR}/translationVerification.desktop DESTINATION share/applications/)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-linux-${ARCHITECTURE}")
set(CPACK_GENERATOR "TXZ")
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Translation_Verification")
set(CPACK_NSIS_DISPLAY_NAME ${CMAKE_PACKAGE_NAME}) 。
set(CPACK_NSIS_COMPRESSOR lzma)
set(CPACK_NSIS_INSTALLED_ICON_NAME Translation_Verification.exe)
set(CPACK_NSIS_MENU_LINKS "Translation_Verification.exe" "翻譯驗證")
set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ${CMAKE_INSTALL_BINDIR})
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
include(InstallRequiredSystemLibraries)
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}")
add_custom_command(TARGET Translation_Verification POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_BINARY_DIR}/qtDeploy/()
命令 ${windeployqt_executable}--release
--release
--verbose1
--no-compiler-runtime
--no-angle
--no-opengl
--no-opengl-sw
--no-webkit2
--no-quick-import --no-webkit2
--no-translations
--dir ${CMAKE_BINARY_DIR}/qtDeploy $<TARGET_FILE:Translation_Verification>
)
install(
DIRECTORY ${CMAKE_BINARY_DIR}/qtDeploy/.
目標地址.
FILES_MATCHING PATTERN "*.*"
)
set(CPACK_GENERATOR "ZIP;NSIS")
endif()
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}-src")
set(CPACK_SOURCE_GENERATOR "zip;TGZ")
include(CPack)
uj5u.com熱心網友回復:
你通過在
中使用DESTINATION .來明確地詢問你的結果。
install(
DIRECTORY ${CMAKE_BINARY_DIR}/qtDeploy/.
目標地址.
FILES_MATCHING PATTERN "*.*"/span>.
)
這可以是DESTINATION ${CMAKE_INSTALL_BINDIR}指向你用于其他二進制檔案的同一目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310173.html
標籤:

