Skip to content

Commit 9155f53

Browse files
committed
Fixed linux build
1 parent 0c2206f commit 9155f53

File tree

2 files changed

+55
-44
lines changed

2 files changed

+55
-44
lines changed

src/CMakeLists.txt

Lines changed: 54 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,28 @@ elseif(APPLE)
165165
install(DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_TARGET_NAME}/${PROJECT_SHORT_REL_NAME}.app DESTINATION . USE_SOURCE_PERMISSIONS COMPONENT Application)
166166
else()
167167
set(CMAKE_INSTALL_PREFIX "/opt/${PROJECT_FAMILY_NAME}/${PROJECT_SHORT_REL_NAME}" CACHE PATH "Install path prefix" FORCE)
168+
set(CPACK_SET_DESTDIR ON)
169+
set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
168170

169171
install(TARGETS cloud-client DESTINATION bin COMPONENT Application)
170172
install(DIRECTORY ${PROJECT_TARGET_NAME}/help/ DESTINATION help COMPONENT Application)
171173
install(DIRECTORY ${PROJECT_TARGET_NAME}/doc/ DESTINATION doc COMPONENT Application)
172174
install(DIRECTORY ${PROJECT_TARGET_NAME}/etc/ DESTINATION etc COMPONENT Application)
173175
install(DIRECTORY ${_qt_deploy_dir}/ DESTINATION . COMPONENT Application)
174176
install(FILES ${CMAKE_BINARY_DIR}/LICENSE.txt DESTINATION doc COMPONENT Application)
177+
install(FILES ${PROJECT_TARGET_NAME}/pixmaps/${PROJECT_PACKAGE_NAME}.svg DESTINATION pixmaps COMPONENT Application)
178+
179+
# ---- DEB/RPM
180+
set(DESKTOP_ABS "${CMAKE_BINARY_DIR}/desktop/${PROJECT_PACKAGE_NAME}.desktop")
181+
set(EXEC_PATH "${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_TARGET_NAME}${DEBUG_EXT}")
182+
183+
configure_file(
184+
${CMAKE_SOURCE_DIR}/range-build-tools/packaging/app.desktop.in
185+
${DESKTOP_ABS}
186+
@ONLY
187+
)
188+
189+
install(FILES ${DESKTOP_ABS} DESTINATION desktop COMPONENT Application)
175190
endif()
176191

177192
# CPack -----------------------------------------------------------------------
@@ -214,7 +229,8 @@ if(WIN32)
214229
elseif(APPLE)
215230
set(CPACK_GENERATOR "DragNDrop")
216231
else()
217-
set(CPACK_GENERATOR "IFW;ZIP;TGZ;STGZ;DEB;RPM")
232+
set(CPACK_GENERATOR "STGZ;DEB;RPM")
233+
#set(CPACK_GENERATOR "IFW;ZIP;TGZ;STGZ;DEB;RPM")
218234
endif()
219235

220236
# DEB
@@ -226,6 +242,43 @@ set(CPACK_RPM_PACKAGE_LICENSE "GPLv3")
226242
set(CPACK_RPM_PACKAGE_GROUP "Applications/Internet")
227243
#set(CPACK_RPM_PACKAGE_REQUIRES "glibc >= 2.27")
228244

245+
# Generate scripts from templates (so you can @ONLY-substitute project vars)
246+
configure_file(${CMAKE_SOURCE_DIR}/range-build-tools/packaging/debian/postinst.in
247+
${CMAKE_BINARY_DIR}/packaging/debian/postinst
248+
@ONLY)
249+
configure_file(${CMAKE_SOURCE_DIR}/range-build-tools/packaging/debian/prerm.in
250+
${CMAKE_BINARY_DIR}/packaging/debian/prerm
251+
@ONLY)
252+
253+
# Debian control scripts MUST be executable
254+
file(CHMOD ${CMAKE_BINARY_DIR}/packaging/debian/postinst PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
255+
file(CHMOD ${CMAKE_BINARY_DIR}/packaging/debian/prerm PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ)
256+
257+
# Tell CPack-DEB to include them
258+
# (generic for whole package)
259+
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_BINARY_DIR}/packaging/debian/postinst;${CMAKE_BINARY_DIR}/packaging/debian/prerm")
260+
261+
# If you package by component, use the component-scoped var instead:
262+
# set(CPACK_DEBIAN_APPLICATION_PACKAGE_CONTROL_EXTRA
263+
# "${CMAKE_BINARY_DIR}/packaging/debian/postinst;${CMAKE_BINARY_DIR}/packaging/debian/prerm")
264+
265+
266+
# RPM scripts (don’t need +x; CPack embeds their contents)
267+
configure_file(${CMAKE_SOURCE_DIR}/range-build-tools/packaging/rpm/post.in
268+
${CMAKE_BINARY_DIR}/packaging/rpm/post
269+
@ONLY)
270+
configure_file(${CMAKE_SOURCE_DIR}/range-build-tools/packaging/rpm/preun.in
271+
${CMAKE_BINARY_DIR}/packaging/rpm/preun
272+
@ONLY)
273+
274+
# Tell CPack-RPM where they are
275+
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/post")
276+
set(CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/preun")
277+
278+
# If packaging by component "Application", use component-scoped variants:
279+
# set(CPACK_RPM_APPLICATION_POST_INSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/post")
280+
# set(CPACK_RPM_APPLICATION_PRE_UNINSTALL_SCRIPT_FILE "${CMAKE_BINARY_DIR}/packaging/rpm/preun")
281+
229282
# DMG
230283
if(APPLE)
231284
set(DMG_ICON "${CMAKE_SOURCE_DIR}/${PROJECT_TARGET_NAME}/pixmaps/${PROJECT_PACKAGE_NAME}.icns")
@@ -288,48 +341,6 @@ if(APPLE)
288341
endif()
289342
endif()
290343

291-
# -------------------------------------------------------------
292-
# Linux .desktop + icon install (DEB/RPM) and IFW user install
293-
# -------------------------------------------------------------
294-
if(UNIX AND NOT APPLE)
295-
# Paths used in desktop files
296-
# Executable name follows your DEBUG suffix logic
297-
set(EXEC_BASENAME "${IFW_QS_TARGET_FILE_BASE}") # e.g. fea or fea_debug
298-
299-
# ---- DEB/RPM (absolute paths under CMAKE_INSTALL_PREFIX)
300-
set(DESKTOP_ABS "${CMAKE_BINARY_DIR}/${PROJECT_PACKAGE_NAME}.desktop")
301-
set(EXEC_PATH "${CMAKE_INSTALL_PREFIX}/bin/${EXEC_BASENAME}")
302-
set(ICON_PATH "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/256x256/apps/${PROJECT_PACKAGE_NAME}.png")
303-
304-
configure_file(
305-
${CMAKE_SOURCE_DIR}/range-build-tools/app.desktop.in
306-
${DESKTOP_ABS}
307-
@ONLY
308-
)
309-
310-
# Install desktop + a 256px PNG icon for system packages
311-
install(FILES "${DESKTOP_ABS}" DESTINATION share/applications COMPONENT Application)
312-
install(FILES "${CMAKE_SOURCE_DIR}/${PROJECT_TARGET_NAME}/pixmaps/${PROJECT_PACKAGE_NAME}.png"
313-
DESTINATION share/icons/hicolor/256x256/apps COMPONENT Application)
314-
315-
# ---- IFW (will be copied to ~/.local/share/applications at install-time)
316-
# Keep dynamic placeholders that IFW script will replace with the real TargetDir
317-
set(DESKTOP_IFW "${CMAKE_BINARY_DIR}/${PROJECT_PACKAGE_NAME}.desktop.ifw")
318-
set(EXEC_PATH "@EXEC_PATH@") # placeholder
319-
set(ICON_PATH "@ICON_PATH@") # placeholder
320-
configure_file(
321-
${CMAKE_SOURCE_DIR}/range-build-tools/app.desktop.in
322-
${DESKTOP_IFW}
323-
@ONLY
324-
)
325-
326-
# Ship the template + icon inside the IFW payload (into app dir)
327-
install(FILES "${DESKTOP_IFW}" DESTINATION . COMPONENT Application)
328-
install(FILES "${CMAKE_SOURCE_DIR}/${PROJECT_TARGET_NAME}/pixmaps/${PROJECT_PACKAGE_NAME}.png"
329-
DESTINATION ${PROJECT_TARGET_NAME}/pixmaps COMPONENT Application)
330-
endif()
331-
332-
333344
# -----------------------------------------------------------------------------
334345

335346
include(CPackIFW)

0 commit comments

Comments
 (0)