cmake_minimum_required(VERSION 3.5) # CMake install : https://cmake.org/download/ project(cpack) set(INSERT_NAME "COMPASS-Rules") set(INSERT_VERSION_ "1.0") set(INSERT_DESCRIPTION "This is COMPASS-Rules") set(INSERT_VENDOR "中国船级社") set(INSERT_CONTACT "http://callcenter.ccs.org.cn") set(INSERT_PACKAGE_NAME "COMPASS-Rules2023") if(WIN32) #安装编译的文件 install(TARGETS "${OUT_PROJECT_NAME}" RUNTIME DESTINATION "bin" ) #拷贝目录下所有文件至安装目录 install(DIRECTORY "${PROJECTS_PATH}/win_bin/" DESTINATION "bin" ) # CPack 配置 set(CPACK_GENERATOR "NSIS") # 使用 NSIS 生成 Windows 安装程序 set(CPACK_PACKAGE_NAME "${INSERT_NAME}") set(CPACK_PACKAGE_VERSION "${INSERT_VERSION}") set(CPACK_PACKAGE_DESCRIPTION "${INSERT_DESCRIPTION}") set(CPACK_PACKAGE_VENDOR "${INSERT_VENDOR}") set(CPACK_PACKAGE_CONTACT "${INSERT_CONTACT}") set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-windows-x64-setup") set(CPACK_NSIS_PACKAGE_NAME "${INSERT_PACKAGE_NAME}") # NSIS 打包时使用的名字 #set(CPACK_NSIS_INSTALL_DIRECTORY "") # 安装目录名称 # 设置安装程序图标 set(CPACK_NSIS_MUI_ICON "${PROJECTS_PATH}/win_bin/app.ico") set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS " CreateShortCut '\$DESKTOP\\COMPASS-Rules2023.lnk' '\$INSTDIR\\bin\\COMPASS-Rules.exe' CreateShortCut '\$STARTMENU\\COMPASS-Rules2023.lnk' '\$INSTDIR\\bin\\COMPASS-Rules.exe' ") set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " Delete '\$DESKTOP\\COMPASS-Rules2023.lnk' Delete '\$STARTMENU\\COMPASS-Rules2023.lnk' ") # 启用 CPack include(CPack) else() set(CPACK_GENERATOR "DEB") set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT ON) include (InstallRequiredSystemLibraries) # 创建并安装桌面快捷方式文件 install(CODE "file(WRITE \"${PROJECTS_PATH}/arm_linux_bin/release/COMPASS-Rules2023.desktop\" \"[Desktop Entry] Name=COMPASS-Rules Exec=${CMAKE_INSTALL_PREFIX}/COMPASS-Rules2023/COMPASS-Rules Icon=${CMAKE_INSTALL_PREFIX}/COMPASS-Rules2023/app.ico Type=Application Categories=Utility Terminal=false Comment=COMPASS-Rules application\")" ) install(FILES "${PROJECTS_PATH}/arm_linux_bin/release/COMPASS-Rules2023.desktop" DESTINATION /usr/share/applications PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE WORLD_READ WORLD_EXECUTE) set(desk_top_path "$ENV{HOME}/桌面") install(FILES "${PROJECTS_PATH}/arm_linux_bin/release/COMPASS-Rules2023.desktop" DESTINATION "${desk_top_path}" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE WORLD_READ WORLD_EXECUTE) # 更改文件所有权为当前用户 #install(CODE " # set(desktop_file \"${desk_top_path}/COMPASS-Rules2023.desktop\") # execute_process(COMMAND chown \$ENV{USER}:\$ENV{USER} \${desktop_file}) #") # 拷贝目录下所有文件至安装目录 install(DIRECTORY "${PROJECTS_PATH}/arm_linux_bin/release/" DESTINATION ${CMAKE_INSTALL_PREFIX}/COMPASS-Rules2023 DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ WORLD_READ PATTERN "*" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE PATTERN "libexec/*" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE PATTERN "lib/*" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) # 安装图标 install(FILES ${PROJECTS_PATH}/arm_linux_bin/release/app.ico DESTINATION /usr/share/icons) # CPack 配置 set(CPACK_PACKAGE_NAME "${INSERT_NAME}") set(CPACK_PACKAGE_VERSION "${INSERT_VERSION_}") set(CPACK_PACKAGE_DESCRIPTION "${INSERT_DESCRIPTION}") set(CPACK_PACKAGE_VENDOR "${INSERT_VENDOR}") set(CPACK_PACKAGE_CONTACT "${INSERT_CONTACT}") set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-linux-arm-x64-setup") set(CPACK_DEBIAN_PACKAGE_NAME "${INSERT_PACKAGE_NAME}") set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "arm64") set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.14)") set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECTS_PATH}/arm_linux_bin/release/postinst") message("CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA: ${CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA}") # 加载 CPack 模块 include(CPack) endif()