From b9682fc6fd3885fa82e4fe0bd216bb0f46e225c9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 1 Aug 2023 14:38:48 -0400 Subject: [PATCH] zip file packaging for windows --- .gitignore | 1 + cmake/packaging/build_windows_vs.cmake | 28 ++++++++++++++++++++++++++ tools/lammps-gui/CMakeLists.txt | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 cmake/packaging/build_windows_vs.cmake diff --git a/.gitignore b/.gitignore index 8b711047de..4faef4b8db 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ src/Makefile.package-e src/Makefile.package.settings-e /cmake/build/x64-Debug-Clang /install/x64-GUI-MSVC +/install diff --git a/cmake/packaging/build_windows_vs.cmake b/cmake/packaging/build_windows_vs.cmake new file mode 100644 index 0000000000..225de17854 --- /dev/null +++ b/cmake/packaging/build_windows_vs.cmake @@ -0,0 +1,28 @@ +# CMake script to be run post installation to build zipped package + +# clean up old zipfile and deployment tree +file(REMOVE LAMMPS-Win10-amd64.zip) +file(REMOVE_RECURSE LAMMPS_GUI) +file(RENAME ${INSTNAME} LAMMPS_GUI) + +# move all executables and dlls to main folder and delete bin folder +file(GLOB BINFILES LIST_DIRECTORIES FALSE LAMMPS_GUI/bin/*.exe LAMMPS_GUI/bin/*.dll) +foreach(bin ${BINFILES}) + get_filename_component(exe ${bin} NAME) + file(RENAME ${bin} LAMMPS_GUI/${exe}) +endforeach() +file(REMOVE_RECURSE LAMMPS_GUI/bin) + +# create qt.conf so Qt will find its plugins +file(WRITE LAMMPS_GUI/qt.conf "[Paths]\r\nPlugins = qt5plugins\r\n") + +# initialize environment and then run windeployqt to populate folder with missing dependencies and Qt plugins +file(WRITE qtdeploy.bat "@ECHO OFF\r\nset VSCMD_DEBUG=0\r\nCALL ${VC_INIT} x64\r\nset PATH=${QT5_BIN_DIR};%PATH%\r\nwindeployqt --plugindir LAMMPS_GUI/qt5plugins --release LAMMPS_GUI/lammps-gui.exe --no-quick-import --no-webkit2 --no-translations --no-system-d3d-compiler --no-angle --no-opengl-sw\r\n") +execute_process(COMMAND cmd.exe /c qtdeploy.bat COMMAND_ECHO STDERR) +file(REMOVE qtdeploy.bat) + +# create zip archive +file(WRITE makearchive.ps1 "Compress-Archive -Path LAMMPS_GUI -CompressionLevel Optimal -DestinationPath LAMMPS-Win10-amd64.zip") +execute_process(COMMAND powershell -ExecutionPolicy Bypass -File makearchive.ps1) +file(REMOVE makearchive.ps1) +file(REMOVE_RECURSE LAMMPS_GUI) \ No newline at end of file diff --git a/tools/lammps-gui/CMakeLists.txt b/tools/lammps-gui/CMakeLists.txt index 30bc4b127a..c011b7c938 100644 --- a/tools/lammps-gui/CMakeLists.txt +++ b/tools/lammps-gui/CMakeLists.txt @@ -158,6 +158,13 @@ elseif(WIN32) install(FILES $ TYPE BIN) install(FILES $ TYPE BIN) install(FILES $ TYPE BIN) + # find path to VC++ init batch file + get_filename_component(VC_COMPILER_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) + get_filename_component(VC_BASE_DIR "${VC_COMPILER_DIR}/../../../../../.." ABSOLUTE) + set(VC_INIT "${VC_BASE_DIR}/Auxiliary/Build/vcvarsall.bat") + get_filename_component(QT5_BIN_DIR "${Qt5Core_DIR}/../../../bin" ABSOLUTE) + get_filename_component(INSTNAME ${CMAKE_INSTALL_PREFIX} NAME) + install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" -D INSTNAME=${INSTNAME} -D VC_INIT=\"${VC_INIT}\" -D QT5_BIN_DIR=\"${QT5_BIN_DIR}\" -P \"${CMAKE_SOURCE_DIR}/packaging/build_windows_vs.cmake\" WORKING_DIRECTORY \"${CMAKE_INSTALL_PREFIX}/..\" COMMAND_ECHO STDOUT)") else() install(TARGETS lammps-gui DESTINATION ${CMAKE_INSTALL_BINDIR}) install(CODE [[