와 cmake 프로젝트를 연결 :배포 ICU 라이브러리 I는 약간의 응용 프로그램을 만들기위한 <code>CMakeLists.txt</code> 다음 한 Qt5
cmake_minimum_required (VERSION 3.5.0)
project (sampleapp)
# Setting project flags
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/lib)
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/lib)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build/bin)
set (CMAKE_INCLUDE_CURRENT_DIR ON)
set (CMAKE_AUTOMOC ON)
# Finding needed packages
find_package (Qt5Widgets REQUIRED)
find_package (Qt5Core REQUIRED)
find_package (Qt5Gui REQUIRED)
# Setting project files
include_directories (${CMAKE_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR})
file (GLOB_RECURSE PROJECT_SRC *.cpp)
# Creating project
add_executable(${PROJECT_NAME} ${PROJECT_SRC})
# Linking dependencies
target_link_libraries (${PROJECT_NAME} somelibrary Qt5::Widgets Qt5::Gui Qt5::Core)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Widgets> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Gui> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::Core> $<TARGET_FILE_DIR:${PROJECT_NAME}>)
나는 그것을 실행 한 다음 Qt는 DLL을 대상 폴더에 복사하는 응용 프로그램을 구축 할 수 있습니다. 특히 나는 복사 :
Qt5Widgets.dll
내가 Qt를 위해 필요한 ICU 라이브러리를 복사하지 않기 때문에 어쨌든 시작되지 않는 응용 프로그램을 실행
Qt5Core.dll
Qt5Gui.dll
. 나는 응용 프로그램을 시작하면, 윈도우는 다음 라이브러리가 누락 된 것을 저에게 말한다 : 나는 Qt는 insallation 폴더에서 수동으로 라이브러리를 복사 할 경우
icuin53.dll
icuuc53.dll
가 작동 (좋아, 내가했습니다 "플랫폼 플러그인 창"에 관한 오류가 누락되었지만 또 다른 이야기입니다.)
라이브러리를 복사하는 데 사용하는 빌드 빌드 명령과 같은 표준 방식으로 icu 라이브러리를 복사 할 수 있습니까? 가능한 경우 투명하게 복사하는 가장 좋은 방법은 무엇입니까 (CMake는 Qt의 종속성을 알 수 있고 Qt가 필요한 곳에 복사 할 수 있습니다).
'CMake는 Qt를의 의존성이하고 어디를 복사 것을 알 수 있습니다 Qt가 필요합니다'- CMake 자체는 모든 depdendent 라이브러리를 복사하는 기능이 없습니다. – Tsyvarev
Qt와 함께이 라이브러리를 복사하는 가장 좋은 방법은 무엇입니까? – Jepessen
필자가 이해하는 한, CMake는 ** 3di 파티 라이브러리 **를 ** 잘못된 디자인 **으로 실행 가능한 디렉토리로 복사합니다. 개발자의 관점에서 볼 때, 3d 파티 라이브러리는 * system-wide *로 설치해야 실행 파일에서로드 할 수 있습니다. 귀하의 문제가 사실임을 이해하는 동안 나는 결정을 모릅니다. – Tsyvarev