@@ -238,6 +238,8 @@ elseif(APPLE)
238238 install (TARGETS fea-solver BUNDLE DESTINATION bin COMPONENT Application)
239239else ()
240240 set (CMAKE_INSTALL_PREFIX "/opt/${PROJECT_FAMILY_NAME} /${PROJECT_SHORT_REL_NAME} " CACHE PATH "Install path prefix" FORCE)
241+ set (CPACK_SET_DESTDIR ON )
242+ set (CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX} " )
241243
242244 install (TARGETS fea DESTINATION bin COMPONENT Application)
243245 install (TARGETS fea-solver DESTINATION bin COMPONENT Application)
@@ -247,6 +249,19 @@ else()
247249 install (DIRECTORY ${PROJECT_TARGET_NAME} /materials/ DESTINATION materials COMPONENT Application)
248250 install (DIRECTORY ${_qt_deploy_dir} / DESTINATION . COMPONENT Application)
249251 install (FILES ${CMAKE_BINARY_DIR} /LICENSE.txt DESTINATION doc COMPONENT Application)
252+ install (FILES ${PROJECT_TARGET_NAME} /pixmaps/${PROJECT_PACKAGE_NAME} .svg DESTINATION pixmaps COMPONENT Application)
253+
254+ # ---- DEB/RPM
255+ set (DESKTOP_ABS "${CMAKE_BINARY_DIR} /desktop/${PROJECT_PACKAGE_NAME} .desktop" )
256+ set (EXEC_PATH "${CMAKE_INSTALL_PREFIX} /bin/${PROJECT_TARGET_NAME}${DEBUG_EXT} " )
257+
258+ configure_file (
259+ ${CMAKE_SOURCE_DIR} /range-build -tools/packaging/app.desktop.in
260+ ${DESKTOP_ABS}
261+ @ONLY
262+ )
263+
264+ install (FILES ${DESKTOP_ABS} DESTINATION desktop COMPONENT Application)
250265endif ()
251266
252267# CPack -----------------------------------------------------------------------
@@ -289,7 +304,8 @@ if(WIN32)
289304elseif (APPLE )
290305 set (CPACK_GENERATOR "DragNDrop" )
291306else ()
292- set (CPACK_GENERATOR "IFW;ZIP;TGZ;STGZ;DEB;RPM" )
307+ set (CPACK_GENERATOR "STGZ;DEB;RPM" )
308+ #set(CPACK_GENERATOR "IFW;ZIP;TGZ;STGZ;DEB;RPM")
293309endif ()
294310
295311# DEB
@@ -301,6 +317,43 @@ set(CPACK_RPM_PACKAGE_LICENSE "GPLv3")
301317set (CPACK_RPM_PACKAGE_GROUP "Applications/Internet" )
302318#set(CPACK_RPM_PACKAGE_REQUIRES "glibc >= 2.27")
303319
320+ # Generate scripts from templates (so you can @ONLY-substitute project vars)
321+ configure_file (${CMAKE_SOURCE_DIR} /range-build -tools/packaging/debian/postinst.in
322+ ${CMAKE_BINARY_DIR} /packaging/debian/postinst
323+ @ONLY)
324+ configure_file (${CMAKE_SOURCE_DIR} /range-build -tools/packaging/debian/prerm.in
325+ ${CMAKE_BINARY_DIR} /packaging/debian/prerm
326+ @ONLY)
327+
328+ # Debian control scripts MUST be executable
329+ file (CHMOD ${CMAKE_BINARY_DIR} /packaging/debian/postinst PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
330+ file (CHMOD ${CMAKE_BINARY_DIR} /packaging/debian/prerm PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
331+
332+ # Tell CPack-DEB to include them
333+ # (generic for whole package)
334+ set (CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR} /packaging/debian/postinst;${CMAKE_BINARY_DIR} /packaging/debian/prerm" )
335+
336+ # If you package by component, use the component-scoped var instead:
337+ # set(CPACK_DEBIAN_APPLICATION_PACKAGE_CONTROL_EXTRA
338+ # "${CMAKE_BINARY_DIR}/packaging/debian/postinst;${CMAKE_BINARY_DIR}/packaging/debian/prerm")
339+
340+
341+ # RPM scripts (don’t need +x; CPack embeds their contents)
342+ configure_file (${CMAKE_SOURCE_DIR} /range-build -tools/packaging/rpm/post.in
343+ ${CMAKE_BINARY_DIR} /packaging/rpm/post
344+ @ONLY)
345+ configure_file (${CMAKE_SOURCE_DIR} /range-build -tools/packaging/rpm/preun.in
346+ ${CMAKE_BINARY_DIR} /packaging/rpm/preun
347+ @ONLY)
348+
349+ # Tell CPack-RPM where they are
350+ set (CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR} /packaging/rpm/post" )
351+ set (CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR} /packaging/rpm/preun" )
352+
353+ # If packaging by component "Application", use component-scoped variants:
354+ # set(CPACK_RPM_APPLICATION_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/post")
355+ # set(CPACK_RPM_APPLICATION_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/preun")
356+
304357# DMG
305358if (APPLE )
306359 set (DMG_ICON "${CMAKE_SOURCE_DIR} /${PROJECT_TARGET_NAME} /pixmaps/${PROJECT_PACKAGE_NAME} .icns" )
0 commit comments