首页 > 解决方案 > 如何将 qwindows.dll 复制到平台目标子文件夹中?

问题描述

我正在尝试qwindows.dll从 qt 库文件夹复制到目标之一。目前我正在使用以下代码:

add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::QWindowsIntegrationPlugin> $<TARGET_FILE_DIR:${PROJECT_NAME}>)

它可以工作,但它会将文件复制到目标目录中。我需要将文件复制到platforms子文件夹中,但我不知道该怎么做。我试过了

add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:Qt5::QWindowsIntegrationPlugin> $<TARGET_FILE_DIR:${PROJECT_NAME}>/platforms/qwindows.dll)

但问题是 .dll 在调试模式下有另一个名称(qwindowsd.dll),所以我需要插入两次命令。

有没有办法使用Qt5::QWindowsIntegrationPlugin来检索文件名并将其用作第二个命令中的目标文件?

标签: qtcmake

解决方案


add_custom_command(
    TARGET demo POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:demo>/platforms/
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        $<TARGET_FILE:Qt5::QWindowsIntegrationPlugin>
        $<TARGET_FILE_DIR:demo>/platforms/
)

推荐阅读