自分のプロジェクトで行ったことは、VTKのcmake-variablesとQT_LIBRARIES変数から.soファイルまたは.dllファイルを得る小さなスクリプトを書いています。
その後、これらの.dllまたは.soファイルをインストールターゲット(以下のサンプルスクリプト)に追加し、インストールターゲットはそれらの.dllまたは.soファイルをVTK_DIRまたはQTDIRから$ {CMAKE_INSTALL_PREFIX} \ binにコピーします。これはCPackと互換性があるので、少しのcpackスクリプトも書くことができます。
注意は、しかし、あなたがWindows上でもう少し必要であることをエンドユーザーの自己完結型パッケージを取得する:あなたはまた、「システム・ライブラリ」が必要になります(MSVCRT.DLL、msvcrp.dllまたはmingwm10。 dll、libstdC++。dll)。例えば。 this questionをご覧ください。
Windowsでは、次のスクリプトは、すべて VTK_DIRからのVtk dllを検出します。
file(GLOB VTK_DLLS ${VTK_RUNTIME_LIBRARY_DIRS}/*.dll)
if(VTK_DLLS)
foreach(Vtk_library ${VTK_DLLS})
# Add it to the list of 'desired' vtk-libraries for later installation
list(APPEND Vtk_Install_Libraries ${Vtk_library})
endforeach(Vtk_library ${VTK_DLLS})
list(REMOVE_DUPLICATES Vtk_Install_Libraries)
install(FILES ${Vtk_Install_Libraries} DESTINATION bin COMPONENT ThirdParty )
endif(VTK_DLLS)
そして、私は両方のデバッグ - を見つけるとライブラリを解放するために必要なので、Qtのためのスクリプトは、少し長いです。アップ側:それは唯一の私は、あなたが試してみましたが、何が動作していない何find_package(Qt4 ...)
# If Qt-4 was used, add the 'found' Qt-libraries to the Install-target.
if (USE_QT)
foreach(Qt_library ${QT_LIBRARIES})
# With QT_USE_IMPORTED_TARGETS, we should extract the dll info
# from the target properties
get_target_property(Qt_lib_name ${Qt_library} IMPORTED_LOCATION)
get_target_property(Qt_lib_name_debug ${Qt_library} IMPORTED_LOCATION_DEBUG)
get_target_property(Qt_lib_name_release ${Qt_library} IMPORTED_LOCATION_RELEASE)
# Initially assume the release dlls should be installed, but
# fall back to debug if necessary
if (Qt_lib_name_release AND EXISTS ${Qt_lib_name_release})
set(Qt_library_location ${Qt_lib_name_release})
elseif (Qt_lib_name_debug AND EXISTS ${Qt_lib_name_debug} AND ENVIRONMENT_DEBUG)
set(Qt_library_location ${Qt_lib_name_debug})
elseif (Qt_lib_name AND EXISTS ${Qt_lib_name})
set(Qt_library_location ${Qt_lib_name})
endif (Qt_lib_name_release AND EXISTS ${Qt_lib_name_release})
# Extract the filename part, without the lib-prefix or the .a or ..lib suffix
get_filename_component(Qt_library_name ${Qt_library_location} NAME_WE)
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})
else (EXISTS ${Qt_shared_library})
message(WARNING " could not find ${Qt_shared_library}")
endif (EXISTS ${Qt_shared_library})
endforeach(Qt_library ${QT_LIBRARIES})
# When building against a static Qt, the list of Qt_Install_Libraries can be empty
if (Qt_Install_Libraries)
list(REMOVE_DUPLICATES Qt_Install_Libraries)
install(FILES ${Qt_Install_Libraries} DESTINATION bin COMPONENT ThirdParty)
endif (Qt_Install_Libraries)
endif (USE_QT)
を要求し、これらのコンポーネントを検索しますか?まずWindows上で全部をコンパイルしてみてください。それがうまくいくならば、パッケージングに行きます。 'cpack'と' cpack-nsis'を見てください。 – Anonymous