CMake QT_库二进制等价

CMake QT_库二进制等价,qt,qt4,cmake,Qt,Qt4,Cmake,我想在后期构建步骤中复制所需的二进制文件。是否有此变量的版本列出与库关联的二进制文件?类似于${QT_BINARIES}的东西,它将列出专门用于所包含模块的文件。是的,有一个$(QT_库),其中将包含您请求的那些QT DLL(及其依赖项) 结合变量$(QT_BINARY_DIR),可以重建二进制文件列表。例如,在Windows上类似以下内容(从我自己的构建后CMAKE文件中剥离) foreach( Qt_library ${QT_LIBRARIES} ) get_filename_com

我想在后期构建步骤中复制所需的二进制文件。是否有此变量的版本列出与库关联的二进制文件?类似于
${QT_BINARIES}
的东西,它将列出专门用于所包含模块的文件。

是的,有一个$(QT_库),其中将包含您请求的那些QT DLL(及其依赖项)

结合变量$(QT_BINARY_DIR),可以重建二进制文件列表。例如,在Windows上类似以下内容(从我自己的构建后CMAKE文件中剥离)

foreach( Qt_library ${QT_LIBRARIES} )
    get_filename_component( Qt_library_name ${Qt_library} NAME_WE )
    # Note: the following Regex works for me on windows, I am not sure if it 
    # fully portable.
    string( REGEX REPLACE "^lib(.*)" "\\1" Qt_library_name ${Qt_library_name} )

    set( Qt_shared_library ${QT_BINARY_DIR}/${Qt_library_name}.dll )
    if( EXISTS ${Qt_shared_library} )
        # Add it to the list of 'desired' qt-libraries for later installation
        list( APPEND Qt_Install_Libraries ${Qt_shared_library} )
    endif( EXISTS ${Qt_shared_library} )
endforeach( Qt_library ${QT_LIBRARIES} )
list( REMOVE_DUPLICATES Qt_Install_Libraries )
install( FILES ${Qt_Install_Libraries} DESTINATION bin COMPONENT ThirdParty )

在这种情况下,我在最后一行使用了安装命令,但当然可以用一个副本替换它。

< P>您还应该考虑查看CMake的BultUpLoad能力,它分析共享的库先决条件、必要的“非系统”库中的副本(甚至修复它们以在MAC上使用@ ExcutababyPosithRoad引用),并让您的可执行文件准备好与它自己的必要库的私有副本一起运行

请参见此处的示例:

它对于只拉入可执行文件实际引用的那些Qt库特别有用

完成此操作后,您将获得捆绑应用程序的“独立”副本(或在同一目录中具有共享库的可执行文件),可以安全地复制到另一台计算机