From 02e3ffb5d0d399b6784cc614d91c27c3eea5f72d Mon Sep 17 00:00:00 2001 From: coconil Date: Tue, 31 Jan 2023 22:17:32 +0800 Subject: [PATCH 01/24] add cmake support --- .gitignore | 2 +- CMakeLists.txt | 25 +++++++++++++++++++++++++ src/qscint/CMakeLists.txt | 6 +++--- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 8d723bc..5b2c34b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ *.user *.userosscache *.sln.docstates - +build # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs diff --git a/CMakeLists.txt b/CMakeLists.txt index f1d6eea..b4d03a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,8 @@ +<<<<<<< HEAD cmake_minimum_required(VERSION 3.16) +======= +cmake_minimum_required(VERSION 3.24) +>>>>>>> 0e50547 (add cmake support) project(notepad--) set(CMAKE_AUTOMOC ON) @@ -7,6 +11,7 @@ set(CMAKE_AUTORCC ON) find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) +<<<<<<< HEAD # TODO: use system provided libraries to build # current status: some header can not be found,for example: Scintilla.h find_library(QSCINTILLA_LIB_PATH qscintilla2_qt5) @@ -25,6 +30,10 @@ message("QSCINTILLA_LIB_PATH:" ${QSCINTILLA_LIB_PATH}) message("QSCINTILLA_INC_PATH:" ${QSCINTILLA_INC_PATH}) message("SCINTILLA_INC_PATH:" ${SCINTILLA_INC_PATH}) endif() +======= +add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) + +>>>>>>> 0e50547 (add cmake support) file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui) set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui) @@ -32,6 +41,7 @@ aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC) add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) +<<<<<<< HEAD target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src/cceditor @@ -53,3 +63,18 @@ install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr include(${PROJECT_SOURCE_DIR}/cmake/package_config.cmake) include(CPack) +======= +target_include_directories(${PROJECT_NAME} PRIVATE +${PROJECT_SOURCE_DIR}/src +${PROJECT_SOURCE_DIR}/src/cceditor + +${PROJECT_SOURCE_DIR}/src/qscint/src +${PROJECT_SOURCE_DIR}/src/qscint/src/Qsci +${PROJECT_SOURCE_DIR}/src/qscint/scintilla/src +${PROJECT_SOURCE_DIR}/src/qscint/scintilla/include +${PROJECT_SOURCE_DIR}/src/qscint/scintilla/lexlib +${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex +) + +target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) +>>>>>>> 0e50547 (add cmake support) diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index b114614..77f02f2 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.16) -project(qscintilla2_qt5 CXX) +cmake_minimum_required(VERSION 3.22) +project(qscint CXX) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) @@ -28,7 +28,7 @@ ${PROJECT_SOURCE_DIR}/scintilla/boostregex target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/src -${PROJECT_SOURCE_DIR}/src/Qsci +${PROJECT_SOURCE_DIR}/src/Qsci ${PROJECT_SOURCE_DIR}/scintilla/src ${PROJECT_SOURCE_DIR}/scintilla/include) -- Gitee From 0dde32d36f82cb8a0f42bcd9c894861c1b108a2f Mon Sep 17 00:00:00 2001 From: zinface Date: Wed, 1 Feb 2023 20:04:05 +0800 Subject: [PATCH 02/24] =?UTF-8?q?repo:=20=E5=BC=95=E5=85=A5=20Spark=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=EF=BC=8C=E6=94=AF=E6=8C=81=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=20deb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 42 +++- CMakeLists.txt | 34 ++- Makefile | 61 +++++ assets/spark.png | Bin 0 -> 4959 bytes cmake/DebPackageConfig.cmake | 323 +++++++++++++++++++++++++++ cmake/SparkDesktopMacros.cmake | 35 +++ cmake/SparkInstallMacrosConfig.cmake | 131 +++++++++++ cmake/package-deb.descript | 45 ++++ cmake/spark-desktop.desktop.in | 12 + 9 files changed, 674 insertions(+), 9 deletions(-) create mode 100644 Makefile create mode 100644 assets/spark.png create mode 100644 cmake/DebPackageConfig.cmake create mode 100644 cmake/SparkDesktopMacros.cmake create mode 100644 cmake/SparkInstallMacrosConfig.cmake create mode 100644 cmake/package-deb.descript create mode 100644 cmake/spark-desktop.desktop.in diff --git a/.gitignore b/.gitignore index 5b2c34b..2c6580d 100644 --- a/.gitignore +++ b/.gitignore @@ -390,9 +390,39 @@ FodyWeavers.xsd # Windows Installer files from build outputs *.cab *.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml + + + +# Ignore the build directory generated by the vsocde cmake extension +build/ +# Ignore the build directory generated by the vsocde clangd extension +.cache + +# Created by https://www.toptal.com/developers/gitignore/api/cmake +# Edit at https://www.toptal.com/developers/gitignore?templates=cmake + +### CMake ### +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps + +### CMake Patch ### +# External projects +*-prefix/ + +# End of https://www.toptal.com/developers/gitignore/api/cmake +!/Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index b4d03a2..47f6b46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,7 @@ cmake_minimum_required(VERSION 3.16) ======= cmake_minimum_required(VERSION 3.24) ->>>>>>> 0e50547 (add cmake support) -project(notepad--) +project(notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) @@ -77,4 +76,33 @@ ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex ) target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) ->>>>>>> 0e50547 (add cmake support) + +if(CMAKE_HOST_UNIX) + include(cmake/SparkInstallMacrosConfig.cmake) + include(cmake/SparkDesktopMacros.cmake) + # 内容默认应用名称: Name= 应与项目名称相同 + spark_desktop_macros( + # 应用名称: Name= + ${PROJECT_NAME} + # 应用名称: Name[zh_CN]= + "Notepad--" + # 应用说明: Comment= + "Notepad-- 是一个国产跨平台、简单的文本编辑器。" + # 应用类型: Type= + "Application" + # 执行程序: Exec= + "notepad--" + # 图标路径: Icon= + "/usr/share/notepad--/icons/spark.png" + # 应用分类: Category= + "Development" + ) + spark_install_file(/usr/share/applications/ ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.desktop) + spark_install_file(/usr/share/notepad--/icons/ assets/spark.png) + spark_install_target(/usr/bin/ ${PROJECT_NAME}) + + # 注释行(使用方式) + find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) + add_package_descript(cmake/package-deb.descript) + +endif(CMAKE_HOST_UNIX) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..43e849f --- /dev/null +++ b/Makefile @@ -0,0 +1,61 @@ +CPUS=$(shell nproc) +CALENDAR=$(shell date '+%Y%m%d') +OSID=$(shell lsb_release -si) +OSRELEASE=$(shell lsb_release -sr) +SUFFIX= +ifneq ("$(OSID)", "") +SUFFIX=_$(OSID)$(OSRELEASE) +endif + +PROJECT_NAME=notepad-- +PACKAGE_NAME=com.hmja.notepad + +all: + mkdir -p build + cd build && cmake .. + cd build && make -j$(CPUS) + +run: all + exec $(shell find build/ -maxdepth 1 -type f -executable | grep $(PROJECT_NAME)) + +debug: + mkdir -p build + cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. + cd build && make -j$(CPUS) + +release: + mkdir -p build + cd build && cmake -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" .. + cd build && make -j$(CPUS) + +package: release + cd build && make package + tree build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)-* + dpkg-deb --contents build/$(PACKAGE_NAME)_*$(CALENDAR)*$(SUFFIX).deb + # cd build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)_*$(CALENDAR)*$(SUFFIX).deb && find . + +builddeps: + cd build && make builddeps + +cpus: + @echo "CPU数量: $(CPUS)" + +copytosource:package + cp build/$(PACKAGE_NAME)_*$(CALENDAR)*.deb . + +# 进入 qdebug 模式,在 deepin 中默认被禁用,可 env | grep QT 查看,并在 /etc/X11/Xsession.d/00deepin-dde-env 配置中已定义 +# 1. 禁止 qt 的 debug 打印: qt.*.debug=false +# qt.qpa.input.events +# qt.qpa.events +# 2. 禁止 dtk 的 debug 打印: dtk.*.debug=false +# dtk.dpluginloader +# 3. 禁止 qtcreator 本身的 debug 打印 +# qtc.autotest.testcodeparser +# qtc.clangbackend.server +# ... +# 4. 关闭其它的太麻烦了,直接只启用本地 debug +# .debug=true +enter-qdebug-mode: + # 进入新的 bash 环境 + @# export QT_LOGGING_RULES=".debug=true; qt.*.debug=false; dtk.*.debug=false; dde.*.debug=false; qtc*=false; " && bash + export QT_LOGGING_RULES=".debug=true" && bash diff --git a/assets/spark.png b/assets/spark.png new file mode 100644 index 0000000000000000000000000000000000000000..544e2c7cff5f70894e27a7a717d4a62120630b7a GIT binary patch literal 4959 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 literal 0 HcmV?d00001 diff --git a/cmake/DebPackageConfig.cmake b/cmake/DebPackageConfig.cmake new file mode 100644 index 0000000..cfba051 --- /dev/null +++ b/cmake/DebPackageConfig.cmake @@ -0,0 +1,323 @@ +cmake_minimum_required(VERSION 3.0.0) + +# function(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION) + +# endfunction(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION) + +# if(add_deb_package VALUE) set(Package ${VALUE} PARENT_SCOPE) endif(add_deb_package VALUE) +# if(add_deb_version VALUE) set(Version ${VALUE} PARENT_SCOPE) endif(add_deb_version VALUE) +# if(add_deb_maintainer VALUE) set(Maintainer ${VALUE} PARENT_SCOPE) endif(add_deb_maintainer VALUE) +# if(add_deb_email VALUE) set(Email ${VALUE} PARENT_SCOPE) endif(add_deb_email VALUE) +# if(add_deb_descrition VALUE) set(Descrition ${VALUE} PARENT_SCOPE) endif(add_deb_descrition VALUE) +# if(add_deb_detail VALUE) set(Detail ${VALUE} PARENT_SCOPE) endif(add_deb_detail VALUE) + + +# set(Package "") +# set(Version "") +# set(Architecture "") +# set(Maintainer "") +# set(Email "") +# set(Descrition "") + +function(find_str _IN _SEP _OUT) + string(FIND "${_IN}" "${_SEP}" _TMP) + set(${_OUT} ${_TMP} PARENT_SCOPE) +endfunction(find_str _IN _SEP _OUT) + + +function(find_next _IN _OUT) + find_str("${_IN}" "\n" _TMP) + set(${_OUT} ${_TMP} PARENT_SCOPE) +endfunction(find_next _IN _OUT) + +function(sub_next _IN _INDEX _OUT __OUT) + find_next(${_IN} _NEXTINDEX) + string(SUBSTRING "${_IN}" ${_INDEX} ${_NEXTINDEX} _TMP) + math(EXPR _NEXTINDEX ${_NEXTINDEX}+1) + string(SUBSTRING "${_IN}" ${_NEXTINDEX} -1 __TMP) + set(${_OUT} ${_TMP} PARENT_SCOPE) + set(${__OUT} ${__TMP} PARENT_SCOPE) +endfunction(sub_next _IN _INDEX _OUT) + +function(trim_str _IN _OUT) + string(STRIP "${_IN}" _TMP) + set(${_OUT} ${_TMP} PARENT_SCOPE) +endfunction(trim_str _IN _OUT) + +function(split_str _IN _SEP _OUT) + string(FIND "${_IN}" "${_SEP}" _TMP_INDEX) + if(NOT _TMP_INDEX EQUAL -1) + string(SUBSTRING "${_IN}" 0 ${_TMP_INDEX} _TMP) + math(EXPR _TMP_INDEX ${_TMP_INDEX}+1) + string(SUBSTRING "${_IN}" ${_TMP_INDEX} -1 __TMP) + set(${_OUT} "${_TMP};${__TMP}" PARENT_SCOPE) + else() + set(${_OUT} ${_IN} PARENT_SCOPE) + endif(NOT _TMP_INDEX EQUAL -1) +endfunction(split_str _IN _SEP _OUT) + +function(split_str_p _IN _SEP _OUT __OUT) + split_str("${_IN}" "${_SEP}" _TMP) + list(GET _TMP 0 __TMP) + list(GET _TMP 1 ___TMP) + set(${_OUT} ${__TMP} PARENT_SCOPE) + set(${__OUT} ${___TMP} PARENT_SCOPE) +endfunction(split_str_p _IN _SEP _OUT __OUT) + +function(split_str_n _IN _SEP _OUT _N) + if(_N GREATER 1) + set(_C ${_N}) + set(_RET "") + set(_NEXT ${_IN}) + while(NOT _C EQUAL 0) + split_str("${_NEXT}" "${_SEP}" _TMP) + list(LENGTH _TMP _TMP_LEN) + if(_TMP_LEN EQUAL 2) + list(GET _TMP 0 __TMP) + list(GET _TMP 1 _NEXT) + list(APPEND _RET ${__TMP}) + else() + break() + endif(_TMP_LEN EQUAL 2) + math(EXPR _C "${_C}-1") + endwhile(NOT _C EQUAL 0) + list(APPEND _RET ${_NEXT}) + set(${_OUT} ${_RET} PARENT_SCOPE) + else() + split_str("${_IN}" "${_SEP}" _TMP) + set(${_OUT} ${_TMP} PARENT_SCOPE) + endif(_N GREATER 1) +endfunction(split_str_n _IN _SEP _OUT _N) + + +function(set_package_vars _IN_KEY _IN_VAL) + + # trim_str("${_IN_KEY}" _IN_KEY) + + find_str("${_IN_KEY}" "Type" _Type) + if(_Type EQUAL "0") + string(TOUPPER "${_IN_VAL}" _IN_VAL_UPPER) + string(TOLOWER "${_IN_VAL}" _IN_VAL_LOWER) + set(CPACK_GENERATOR "${_IN_VAL_UPPER}" PARENT_SCOPE) + message("--> 软件包类型: ${_IN_VAL_LOWER}") + endif(_Type EQUAL "0") + + find_str("${_IN_KEY}" "Package" _Package) + if(_Package EQUAL "0") + if(_IN_VAL STREQUAL "auto") + set(CPACK_DEBIAN_PACKAGE_NAME "${PROJECT_NAME}" PARENT_SCOPE) + else() + set(CPACK_DEBIAN_PACKAGE_NAME "${_IN_VAL}" PARENT_SCOPE) + endif(_IN_VAL STREQUAL "auto") + message("--> 软件包名: ${_IN_VAL}") + endif(_Package EQUAL "0") + + find_str("${_IN_KEY}" "Version" _Version) + if(_Version EQUAL "0") + if(_IN_VAL STREQUAL "auto") + set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}" PARENT_SCOPE) + else() + set(CPACK_DEBIAN_PACKAGE_VERSION "${_IN_VAL}" PARENT_SCOPE) + endif(_IN_VAL STREQUAL "auto") + + message("--> 软件版本: ${_IN_VAL}") + endif(_Version EQUAL "0") + + find_str("${_IN_KEY}" "CalVer" _CalVer) + if(_CalVer EQUAL "0") + set(CalVer "${_IN_VAL}" PARENT_SCOPE) + message("--> 日历化版本: ${_IN_VAL}") + endif(_CalVer EQUAL "0") + + find_str("${_IN_KEY}" "Architecture" _Architecture) + if(_Architecture EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_IN_VAL}" PARENT_SCOPE) + if(_IN_VAL STREQUAL "auto") + execute_process( + COMMAND dpkg --print-architecture + OUTPUT_VARIABLE _RETV + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_RETV}" PARENT_SCOPE) + endif(_IN_VAL STREQUAL "auto") + message("--> 软件架构: ${_IN_VAL}") + endif(_Architecture EQUAL "0") + + find_str("${_IN_KEY}" "Priority" _Priority) + if(_Priority EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_PRIORITY "${_IN_VAL}" PARENT_SCOPE) + message("--> 优先级: ${_IN_VAL}") + endif(_Priority EQUAL "0") + + find_str("${_IN_KEY}" "Depends" _Depends) + if(_Depends EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_DEPENDS "${_IN_VAL}" PARENT_SCOPE) + message("--> 软件依赖: ${_IN_VAL}") + endif(_Depends EQUAL "0") + + find_str("${_IN_KEY}" "Maintainer" _Maintainer) + if(_Maintainer EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${_IN_VAL}" PARENT_SCOPE) + message("--> 软件维护者: ${_IN_VAL}") + endif(_Maintainer EQUAL "0") + + find_str("${_IN_KEY}" "Homepage" _Homepage) + if(_Homepage EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${_IN_VAL}" PARENT_SCOPE) + message("--> 软件主页: ${_IN_VAL}") + endif(_Homepage EQUAL "0") + + find_str("${_IN_KEY}" "Recommends" _Recommends) + if(_Recommends EQUAL "0") + set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "${_IN_VAL}" PARENT_SCOPE) + message("--> 软件建议: ${_IN_VAL}") + endif(_Recommends EQUAL "0") + +endfunction(set_package_vars _IN_KEY _IN_VAL) + +# 定义一个自定义(add_package_descript)函数 +# 用于按特定配置约定自动化构建软件包配置 +function(add_package_descript IN_DES) + set(PACKAGE_DES_PATH "${IN_DES}") + + if(EXISTS ${IN_DES}) + + elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}") + set(PACKAGE_DES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}") + else() + message(FATAL_ERROR "!! Not Found Path: ${PACKAGE_DES_PATH}") + return() + endif(EXISTS ${IN_DES}) + + file(READ ${PACKAGE_DES_PATH} DES_CONTENT) + trim_str("${DES_CONTENT}" DES_CONTENT) + + ################## 解析 ################## + + sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) + set(PREV_DES "") + while(NOT DES_LINE STREQUAL "${PREV_DES}") + # 检查该描述行是否是 # 注释开头,是的话将跳过该行 + find_str("${DES_LINE}" "#" _COMMENT) + if(_COMMENT EQUAL "0") + message("--> !!!!!!! ${DES_LINE}") + sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) + continue() + endif(_COMMENT EQUAL "0") + + # 检查该描述行是否是 Descrition 开头,是的话说明描述结尾了 + find_str("${DES_LINE}" "Descrition" _DESCRIPTION) + if(_DESCRIPTION EQUAL "0") + break() + endif(_DESCRIPTION EQUAL "0") + + split_str_n("${DES_LINE}" ":" _TMP 1) + list(LENGTH _TMP _TMP_LEN) + + if(_TMP_LEN EQUAL 2) + split_str_p("${DES_LINE}" ":" _TMP __TMP) + trim_str("${__TMP}" __TMP) + string(LENGTH "${__TMP}" __TMP_LENGTH) + if(NOT __TMP_LENGTH EQUAL "0") + set_package_vars("${_TMP}" "${__TMP}") + endif(NOT __TMP_LENGTH EQUAL "0") + endif(_TMP_LEN EQUAL 2) + + # 记录当前行,获取下一行,可能是已经结尾了(将保持重复行) + set(PREV_DES "${DES_LINE}") + sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) + endwhile(NOT DES_LINE STREQUAL "${PREV_DES}") + + + # 再一次检查该描述行是否是 Descrition 开头,是的话将进行分析描述行 + find_str("${DES_LINE}" "Descrition" _DESCRIPTION) + if(_DESCRIPTION EQUAL "0") + split_str_p("${DES_LINE}" ":" _TMP __TMP) + trim_str("${__TMP}" __TMP) + set(Descrition ${__TMP}) + set(PREV_DES_LINE "") + while(NOT PREV_DES_LINE STREQUAL DES_LINE) + if(NOT PREV_DES_LINE STREQUAL "") + set(Descrition "${Descrition}\n${DES_LINE}") + endif(NOT PREV_DES_LINE STREQUAL "") + set(PREV_DES_LINE "${DES_LINE}") + sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) + endwhile(NOT PREV_DES_LINE STREQUAL DES_LINE) + # set(Descrition "${Descrition}") + message("--> 软件说明: ${Descrition}") + + set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${Descrition}) + endif(_DESCRIPTION EQUAL "0") + + ##################### deb ##################### + # ARCHITECTURE + if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") + set(ARCHITECTURE "amd64") + elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") + set(ARCHITECTURE "arm64") + endif() + + #################### Calendar Version ################### + if("${CalVer}" STREQUAL "true") + string(TIMESTAMP BUILD_TIME "%Y%m%d") + set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}-${BUILD_TIME}") + endif("${CalVer}" STREQUAL "true") + + + + ##################### deb file name ##################### + set(_Package "${CPACK_DEBIAN_PACKAGE_NAME}") + set(_Version "${CPACK_DEBIAN_PACKAGE_VERSION}") + set(_Architecture "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") + + set(_DebFileName + "${_Package}_${_Version}_${_Architecture}${PACKAGE_SUFFIX}.deb" + ) + set(CPACK_DEBIAN_FILE_NAME ${_DebFileName}) + + + # set(CPACK_DEBIAN_PACKAGE_NAME "${Package}") + # set(CPACK_DEBIAN_PACKAGE_VERSION "${Version}") + # set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${Architecture}") + # set(CPACK_DEBIAN_PACKAGE_DEPENDS "${Depends}") + # set(CPACK_DEBIAN_PACKAGE_PRIORITY "${Priority}") + # set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${Maintainer}") + # set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${Descrition}") + + # 设置即将使用的标准脚本 + # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + # "${CMAKE_SOURCE_DIR}/config/DEBIAN/preinst" + # "${CMAKE_SOURCE_DIR}/config/DEBIAN/postinst" + # "${CMAKE_SOURCE_DIR}/config/DEBIAN/prerm" + # "${CMAKE_SOURCE_DIR}/config/DEBIAN/postrm" + # ) + + # 设置为ON,以便使用 dpkg-shlibdeps 生成更好的包依赖列表。 + # set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) + # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) + # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=") + + include(CPack) + +endfunction(add_package_descript IN_DES) + + +# TODO: +# CPACK_GENERATOR +# CPACK_DEBIAN_FILE_NAME - n +# CPACK_DEBIAN_PACKAGE_NAME - y +# CPACK_DEBIAN_PACKAGE_VERSION - y +# CPACK_DEBIAN_PACKAGE_ARCHITECTURE - y(auto) +# CPACK_DEBIAN_PACKAGE_DEPENDS - y +# CPACK_DEBIAN_PACKAGE_PRIORITY - y +# CPACK_DEBIAN_PACKAGE_MAINTAINER - y +# CPACK_DEBIAN_PACKAGE_DESCRIPTION - y + +# ARCHITECTURE +# if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") +# set(ARCHITECTURE "amd64") +# elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") +# set(ARCHITECTURE "arm64") +# endif() + +# string(TIMESTAMP BUILD_TIME "%Y%m%d") diff --git a/cmake/SparkDesktopMacros.cmake b/cmake/SparkDesktopMacros.cmake new file mode 100644 index 0000000..223ac6b --- /dev/null +++ b/cmake/SparkDesktopMacros.cmake @@ -0,0 +1,35 @@ + +macro(spark_desktop_macros _APP_NAME _APP_NAME_ZH_CN _APP_COMMENT _APP_TYPE _APP_EXECUTE_PATH _APP_EXECUTE_ICON_PATH _APP_CATEGORIES) + set(APP_NAME ${_APP_NAME}) + set(APP_NAME_ZH_CN ${_APP_NAME_ZH_CN}) + set(APP_COMMENT ${_APP_COMMENT}) + set(APP_TYPE ${_APP_TYPE}) + set(APP_EXECUTE_PATH ${_APP_EXECUTE_PATH}) + set(APP_EXECUTE_ICON_PATH ${_APP_EXECUTE_ICON_PATH}) + set(APP_CATEGORIES ${_APP_CATEGORIES}) + configure_file(cmake/spark-desktop.desktop.in + ${CMAKE_BINARY_DIR}/${_APP_NAME}.desktop + ) +endmacro(spark_desktop_macros _APP_NAME _APP_NAME_ZH_CN _APP_COMMENT _APP_TYPE _APP_EXECUTE_PATH _APP_EXECUTE_ICON_PATH _APP_CATEGORIES) + +# include(cmake/SparkDesktopMacros.cmake) +# 内容默认应用名称: Name= 应与项目名称相同 +# spark_desktop_macros( + # 应用名称: Name= + # 应用名称: Name[zh_CN]= + # 应用说明: Comment= + # 应用类型: Type= + # 执行程序: Exec= + # 图标路径: Icon= + # 应用分类: Category= +# ) + +# configure_file( +# [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS | +# FILE_PERMISSIONS ...] +# [COPYONLY] [ESCAPE_QUOTES] [@ONLY] +# [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) + +# install(FILES ${APP_NAME}.desktop +# DESTINATION /usr/share/applications +# ) \ No newline at end of file diff --git a/cmake/SparkInstallMacrosConfig.cmake b/cmake/SparkInstallMacrosConfig.cmake new file mode 100644 index 0000000..1f8939b --- /dev/null +++ b/cmake/SparkInstallMacrosConfig.cmake @@ -0,0 +1,131 @@ + +# spark_install_target +# 基于传入的路径/目标进行安装 +# 可接受的值为: 安装路径 目标A +# 可接受的值为: 安装路径 目标A 目标B 目标C... +macro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS) + install(TARGETS + ${INSTALL_TARGETS} ${ARGN} + DESTINATION ${INSTALL_TARGET_DIR}) +endmacro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS) + +# spark_install_file +# 基于传入的路径/文件进行安装 +# 可接受的值为: 安装路径 文件A +# 可接受的值为: 安装路径 文件A 文件B 文件C... +macro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE) + install(FILES + ${INSTALL_FILE} ${ARGN} + DESTINATION ${INSTALL_FILE_DIR}) +endmacro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE) + +# spark_install_program +# 基于传入的路径/文件进行安装,并自动为其添加可执行权限 +# 可接受的值为: 安装路径 文件A +# 可接受的值为: 安装路径 文件A 文件B 文件C... +macro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM) + install(PROGRAMS + ${INSTALL_PROGRAM} ${ARGN} + DESTINATION ${INSTALL_PROGRAM_DIR}) +endmacro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM) + + +# spark_install_directory +# 基于传入的路径/目录进行安装 +# 可接受的值为: 安装路径 路径A +# 可接受的值为: 安装路径 路径A/* 为安装路径A下所有内容 +macro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY) + # INSTALL_DIRECOTRY 可能包含 * ? + # 1. 找到 '*', 截取,列出目录下所有文件,安装 + # 2. 是文件的直接使用 spark_install_file 安装 + # 2. 是目录的直接使用 spark_install_directory 安装 + # message(FATAL_ERROR "${INSTALL_DIRECTORY_DIR}") + # string(FIND [REVERSE]) + string(FIND "${INSTALL_DIRECOTRY}" "*" INSTALL_DIRECTORY_FIND_INDEX) + # message(FATAL_ERROR "${INSTALL_DIRECTORY_FIND_INDEX}: ${INSTALL_DIRECTORY_DIR}") + + # file(GLOB + # [LIST_DIRECTORIES true|false] [RELATIVE ] [CONFIGURE_DEPENDS] + # [...]) + + if (NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1) + # string(SUBSTRING ) + string(SUBSTRING "${INSTALL_DIRECOTRY}" 0 ${INSTALL_DIRECTORY_FIND_INDEX} INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING) + # message(FATAL_ERROR "directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}") + + # file(GLOB + # [LIST_DIRECTORIES true|false] [RELATIVE ] [CONFIGURE_DEPENDS] + # [...]) + + file(GLOB INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}/*) + list(LENGTH INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH) + foreach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST) + # message("-> ${item}") + if(IS_DIRECTORY ${item}) + message("-> ${item} IS_DIRECTORY") + # spark_install_directory(${INSTALL_DIRECTORY_DIR} ${item}) + install(DIRECTORY + ${item} + DESTINATION ${INSTALL_DIRECTORY_DIR} + USE_SOURCE_PERMISSIONS) + else() + message("-> ${item} NOT IS_DIRECTORY") + spark_install_program(${INSTALL_DIRECTORY_DIR} ${item}) + # spark_install_file(${INSTALL_DIRECTORY_DIR} ${item}) + endif(IS_DIRECTORY ${item}) + endforeach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST) + + # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST}") + # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH}") + + else() + message(FATAL_ERROR "install: ${INSTALL_DIRECTORY_DIR}") + + install(DIRECTORY + ${INSTALL_DIRECOTRY} ${ARGN} + DESTINATION ${INSTALL_DIRECTORY_DIR}) + endif(NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1) + +endmacro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY) + + + +macro(spark_install_changelog CHANGE_LOG_FILE) + set(SOURCE_CHANGE_LOG_FILE ${CHANGE_LOG_FILE}) + if (EXISTS ${SOURCE_CHANGE_LOG_FILE}) + + execute_process(COMMAND test -f ${SOURCE_CHANGE_LOG_FILE} + RESULT_VARIABLE changelog_test + ) + execute_process(COMMAND which gzip + RESULT_VARIABLE gzip_test + ) + if (NOT changelog_test EQUAL 0) + message(FATAL_ERROR "NOTE: 不是常规文件: ${SOURCE_CHANGE_LOG_FILE}") + endif(NOT changelog_test EQUAL 0) + + if (NOT gzip_test EQUAL 0) + message(FATAL_ERROR "NOTE: 未安装 gzip, 无法压缩 changelog") + endif(NOT gzip_test EQUAL 0) + + # 压缩与安装日志文件 + add_custom_command( + OUTPUT "${CMAKE_BINARY_DIR}/changelog.gz" + COMMAND gzip -cn9 "${SOURCE_CHANGE_LOG_FILE}" > "${CMAKE_BINARY_DIR}/changelog.gz" + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + COMMENT "Compressing changelog" + ) + add_custom_target(changelog ALL DEPENDS "${CMAKE_BINARY_DIR}/changelog.gz") + + # include(GNUInstallDirs) + set(SPARK_INSTALL_CHANGE_LOG_DIR "/usr/share/doc/${PROJECT_NAME}/") + install(FILES + ${CMAKE_BINARY_DIR}/changelog.gz + debian/copyright + + DESTINATION ${SPARK_INSTALL_CHANGE_LOG_DIR} + ) + else() + message(FATAL_ERROR "未找到: ${SOURCE_CHANGE_LOG_FILE}") + endif(EXISTS ${SOURCE_CHANGE_LOG_FILE}) +endmacro(spark_install_changelog CHANGE_LOG_FILE) diff --git a/cmake/package-deb.descript b/cmake/package-deb.descript new file mode 100644 index 0000000..be0fa83 --- /dev/null +++ b/cmake/package-deb.descript @@ -0,0 +1,45 @@ +# 注释行(使用方式) +# find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) +# add_package_descript(cmake/package-deb.descript) + +# 打包后的文件名称 +# FileName: 待定 +# 配置 PACKAGE_SUFFIX 变量可添加尾巴名称 +# 如在 Makefile 中硬编码方式 +# OSID=$(shell lsb_release -si) +# OSRELEASE=$(shell lsb_release -sr) +# -DPACKAGE_SUFFIX="_$(OSID)$(OSRELEASE)" + +# deb 安装包的安装时脚本 +# 1.安装[前|后]执行脚本(preinst,postinst), +# 2.卸载[前|后]执行脚本(prerm,postrm) +# ControlExtra: 未定义(暂不支持) +# 如需指定请修改 DebPackageConfig.cmake 模板(第252行) +# CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA 变量 + +# 打包类型,暂支持 deb, 未来支持 tgz(tar.gz) +Type: deb +# 软件包名称(自动, 使用 PROJECT_NAME 变量值) +Package: com.hmja.notepad +# 软件包版本(自动, 使用 PROJECT_VERSION 变量值) +Version: auto +# 日历化尾部版本 +CalVer: true +# 软件包架构(自动) +Architecture: auto +# 软件包属于的系统部分[admin|cli-mono|comm|database|debug|devel|doc|editors|education|electronics|embedded|fonts|games|gnome|gnu-r|gnustep|graphics|hamradio|haskell|httpd|interpreters|introspection|java|javascript|kde|kernel|libdevel|libs|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|rust|science|shells|sound|tasks|tex|text|utils|vcs|video|web|x11|xfce|zope] +Section: editors +# 软件包优先级[required|important|stantard|optional|extra] +Priority: optional +# 软件包依赖 +Depends: +# 软件包维护者(组织或个人) +Maintainer: 尹作为 <757210198@qq.com> +# 软件包主页 +Homepage: https://gitee.com/cxasm/notepad-- +# 软件包建议 +Recommends: +# 软件包描述信息 +Descrition: Notepad--是一个国产跨平台、简单的文本编辑器。 + Notepad--是一个国产跨平台、简单的文本编辑器,是替换notepad++的一种选择。 + 其内置强大的代码对比功能,让你丢掉付费的beyond compare。 diff --git a/cmake/spark-desktop.desktop.in b/cmake/spark-desktop.desktop.in new file mode 100644 index 0000000..e7c3b18 --- /dev/null +++ b/cmake/spark-desktop.desktop.in @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Name=@APP_NAME@ +Name[zh_CN]=@APP_NAME_ZH_CN@ +Comment=@APP_COMMENT@ +Type=@APP_TYPE@ +Exec=@APP_EXECUTE_PATH@ +Icon=@APP_EXECUTE_ICON_PATH@ +Categories=@APP_CATEGORIES@ +MimeType=text/plain + +# Generated from the DesktopGenerater component of the z-Tools toolkit \ No newline at end of file -- Gitee From 7c7c96117f6b24ff078ca164c1222bec0a5af302 Mon Sep 17 00:00:00 2001 From: zinface Date: Wed, 1 Feb 2023 20:09:49 +0800 Subject: [PATCH 03/24] =?UTF-8?q?repo:=20=E5=BC=95=E5=85=A5=20Spark=20?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=EF=BC=8C=E6=94=AF=E6=8C=81=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=20Appimage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 8 ++ Makefile | 23 ++++++ cmake/SparkAppimageConfig.cmake | 139 ++++++++++++++++++++++++++++++++ cmake/spark-appimage.desktop.in | 10 +++ 4 files changed, 180 insertions(+) create mode 100644 cmake/SparkAppimageConfig.cmake create mode 100644 cmake/spark-appimage.desktop.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 47f6b46..82c3185 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -101,6 +101,14 @@ if(CMAKE_HOST_UNIX) spark_install_file(/usr/share/notepad--/icons/ assets/spark.png) spark_install_target(/usr/bin/ ${PROJECT_NAME}) + + # 1. 在顶层构建中导入 Appimage 的构建 + include(cmake/SparkAppimageConfig.cmake) # 导入来自 Spark 构建的 Appimage 构建 + add_appimage_icon(assets/spark.png) # 添加到 Appimage 中的默认的图标 + add_appimage_desktop() # 添加到 Appimage 中的默认desktop(使用来自 Spark 构建的 Desktop 构建中配置的信息(必须要求 spark-desktop)) + add_appimage() # 应用对 Appimage 的构建 + + # 注释行(使用方式) find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) add_package_descript(cmake/package-deb.descript) diff --git a/Makefile b/Makefile index 43e849f..b71b27f 100644 --- a/Makefile +++ b/Makefile @@ -59,3 +59,26 @@ enter-qdebug-mode: # 进入新的 bash 环境 @# export QT_LOGGING_RULES=".debug=true; qt.*.debug=false; dtk.*.debug=false; dde.*.debug=false; qtc*=false; " && bash export QT_LOGGING_RULES=".debug=true" && bash + +# Appimage 的构建流 -- +# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) +# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt +# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool +# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 + +# 或指定你所想存放克隆项目的位置 +BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt + +download-bundle-linuxdeploytools: + -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) + +LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" +APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" + +linuxdeploy: release download-bundle-linuxdeploytools + cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) + cd build && make linuxdeploy + +genrate-appimage: + cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) + cd build && make appimage diff --git a/cmake/SparkAppimageConfig.cmake b/cmake/SparkAppimageConfig.cmake new file mode 100644 index 0000000..7463a48 --- /dev/null +++ b/cmake/SparkAppimageConfig.cmake @@ -0,0 +1,139 @@ +# export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH +# export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH +# export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins:$QT_PLUGIN_PATH +# export QML2_IMPORT_PATH=/usr/lib/x86_64-linux-gnu/qt5/qml:$QML2_IMPORT_PATH + +# export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH +# ~/linuxdeployqt-continuous-x86_64.AppImage spark-store-submitter -appimage +# cd .. +# ~/appimagetool-x86_64.AppImage appimage/ + +# LINUXDEPLOYQT=/home/zinface/linuxdeployqt-continuous-x86_64.AppImage +# APPIMAGETOOL=/home/zinface/appimagetool-x86_64.AppImage + +# if () +set(APPIMAGE_OUTPUT "${CMAKE_BINARY_DIR}/appimage") +set(APPIMAGE_ICON "${APPIMAGE_OUTPUT}/default.png") +set(APPIMAGE_DESTKOP "${APPIMAGE_OUTPUT}/default.desktop") +# set(LINUXDEPLOYQT) +# set(APPIMAGETOOL) + +function(execute_linuxdeploy _PATH) + execute_process(COMMAND ${LINUXDEPLOYQT} + WORKING_DIRECTORY "${APPIMAGE_OUTPUT}" + ) +endfunction(execute_linuxdeploy _PATH) + +function(target_linuxdeploy) + add_custom_target(linuxdeploy pwd + BYPRODUCTS appimage + COMMAND cp ../${PROJECT_NAME} . + COMMAND "${LINUXDEPLOYQT}" ${PROJECT_NAME} -appimage -unsupported-allow-new-glibc -verbose=3 -no-strip|| true + COMMAND cp ../spark-appimage.desktop default.desktop + COMMAND cp ../spark-appimage.png default.png + WORKING_DIRECTORY "${APPIMAGE_OUTPUT}") +endfunction(target_linuxdeploy) + +function(target_appimage) + add_custom_target(copy-desktop-appimage + COMMAND cp ../spark-appimage.desktop default.desktop + COMMAND cp ../spark-appimage.png default.png + WORKING_DIRECTORY "${APPIMAGE_OUTPUT}") + add_custom_target(appimage pwd + COMMAND ${APPIMAGETOOL} ${APPIMAGE_OUTPUT} + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" + DEPENDS copy-desktop-appimage) +endfunction(target_appimage) + +function(add_appimage) + # check linuxdeploy + if(NOT DEFINED LINUXDEPLOYQT) + message("AppImage> Not Found LINUXDEPLOYQT Variable!") + return() + endif(NOT DEFINED LINUXDEPLOYQT) + if(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) + message("> cmake version is less than 3.19") + message(WARNING "!Relative paths are not supported!") + else() + file(REAL_PATH ${LINUXDEPLOYQT} LINUXDEPLOYQT_REAL_PATH) + endif(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) + message("AppImage> Found LINUXDEPLOYQT Variable: ${LINUXDEPLOYQT_REAL_PATH}") + + # check appimagetool + if(NOT DEFINED APPIMAGETOOL) + message("AppImage> Not Found APPIMAGETOOL Variable!") + return() + endif(NOT DEFINED APPIMAGETOOL) + if(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) + # execute_process(COMMAND realpath ${APPIMAGETOOL} OUTPUT_VARIABLE APPIMAGETOOL_REAL_PATH) + message("> cmake version is less than 3.19") + message(WARNING "!Relative paths are not supported!") + else() + file(REAL_PATH ${APPIMAGETOOL} APPIMAGETOOL_REAL_PATH) + endif(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) + message("AppImage> Found APPIMAGETOOL Variable: ${LINUXDEPLOYQT_REAL_PATH}") + + # do add_custome_target + make_directory(${APPIMAGE_OUTPUT}) + target_linuxdeploy() + target_appimage() +endfunction(add_appimage) + +function(add_appimage_desktop) + configure_file(cmake/spark-appimage.desktop.in + ${CMAKE_BINARY_DIR}/spark-appimage.desktop @ONLY) +endfunction(add_appimage_desktop) + +function(add_appimage_icon _ICON_PATH) + if(CMAKE_VERSION VERSION_LESS 3.21) + message("> cmake version is less than 3.21") + configure_file(${_ICON_PATH} ${CMAKE_BINARY_DIR}/spark-appimage.png COPYONLY) + else() + file(COPY_FILE ${_ICON_PATH} ${CMAKE_BINARY_DIR}/spark-appimage.png) + endif(CMAKE_VERSION VERSION_LESS 3.21) +endfunction(add_appimage_icon _ICON_PATH) + + + +# 如果glic>=2.27,你就需要加上参数 -unsupported-allow-new-glibc (意思就是不再低版本发行版使用了) +# 或 -unsupported-bundle-everything(大概的意思是尝试兼容,实际测试,到其他发行版直接用不了了,有可能是发行版的原因,还是建议用前者,虽然放弃了低版本) + +# -unsupported-bundle-everything + # 捆绑所有依赖库,包括 ld-linux.so 加载器和 glibc。这将允许构建在较新系统上的应用程序在较旧的目标系统上运行,但不建议这样做,因为它会导致捆绑包超出所需的大小(并且可能到其他发行版无法使用) +# -unsupported-allow-new-glibc + # 允许 linuxdeployqt 在比仍受支持的最旧 Ubuntu LTS 版本更新的发行版上运行。这将导致 AppImage无法在所有仍受支持的发行版上运行,既不推荐也不测试或支持 + +# ./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-allow-new-glibc +# ./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-bundle-everything + + + + +# 1. 在顶层构建中导入 Appimage 的构建 +# include(cmake/SparkAppimageConfig.cmake) # 导入来自 Spark 构建的 Appimage 构建 +# add_appimage_icon(assets/spark.png) # 添加到 Appimage 中的默认的图标 +# add_appimage_desktop() # 添加到 Appimage 中的默认desktop(使用来自 Spark 构建的 Desktop 构建中配置的信息(必须要求 spark-desktop)) +# add_appimage() # 应用对 Appimage 的构建 + +# 2. 在 Makefile 进行构建目标构建 Appimage 的构建流 -- +# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) +# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt +# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool +# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 + +# 或指定你所想存放克隆项目的位置 +# BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt + +# download-bundle-linuxdeploytools: +# -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) + +# LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" +# APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" + +# linuxdeploy: release download-bundle-linuxdeploytools +# cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) +# cd build && make linuxdeploy + +# genrate-appimage: +# cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) +# cd build && make appimage diff --git a/cmake/spark-appimage.desktop.in b/cmake/spark-appimage.desktop.in new file mode 100644 index 0000000..0ca2577 --- /dev/null +++ b/cmake/spark-appimage.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=@APP_NAME@ +Name[zh_CN]=@APP_NAME_ZH_CN@ +Exec=AppRun %F +Icon=default +Comment=@APP_COMMENT@ +Terminal=true +Type=Application +Categories=@APP_CATEGORIES@ +MimeType=text/plain -- Gitee From ab0d07623dd4e9886cabd847e83d570ac448c8f6 Mon Sep 17 00:00:00 2001 From: zinface Date: Thu, 2 Feb 2023 13:58:29 +0800 Subject: [PATCH 04/24] =?UTF-8?q?desktop:=20=E4=B8=BA=20desktop=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E6=9C=AC=E6=96=87=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=20MimeType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmake/spark-appimage.desktop.in | 2 +- cmake/spark-desktop.desktop.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/spark-appimage.desktop.in b/cmake/spark-appimage.desktop.in index 0ca2577..70fc6b9 100644 --- a/cmake/spark-appimage.desktop.in +++ b/cmake/spark-appimage.desktop.in @@ -7,4 +7,4 @@ Comment=@APP_COMMENT@ Terminal=true Type=Application Categories=@APP_CATEGORIES@ -MimeType=text/plain +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-patch;text/x-adasrc;text/x-chdr;text/x-csrc;text/css;application/x-desktop;text/x-patch;text/x-fortran;text/html;text/x-java;text/x-tex;text/x-makefile;text/x-objcsrc;text/x-pascal;application/x-perl;application/x-perl;application/x-php;text/vnd.wap.wml;text/x-python;application/x-ruby;text/sgml;application/xml;model/vrml;image/svg+xml;application/json; diff --git a/cmake/spark-desktop.desktop.in b/cmake/spark-desktop.desktop.in index e7c3b18..e33c74e 100644 --- a/cmake/spark-desktop.desktop.in +++ b/cmake/spark-desktop.desktop.in @@ -7,6 +7,6 @@ Type=@APP_TYPE@ Exec=@APP_EXECUTE_PATH@ Icon=@APP_EXECUTE_ICON_PATH@ Categories=@APP_CATEGORIES@ -MimeType=text/plain +MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-patch;text/x-adasrc;text/x-chdr;text/x-csrc;text/css;application/x-desktop;text/x-patch;text/x-fortran;text/html;text/x-java;text/x-tex;text/x-makefile;text/x-objcsrc;text/x-pascal;application/x-perl;application/x-perl;application/x-php;text/vnd.wap.wml;text/x-python;application/x-ruby;text/sgml;application/xml;model/vrml;image/svg+xml;application/json; # Generated from the DesktopGenerater component of the z-Tools toolkit \ No newline at end of file -- Gitee From 0646ea32df8d1d16f51e1aaa3e2e954e7c7162ac Mon Sep 17 00:00:00 2001 From: zinface Date: Thu, 2 Feb 2023 14:00:54 +0800 Subject: [PATCH 05/24] =?UTF-8?q?repo:=20=E5=AF=B9=20desktop=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=B7=BB=E5=8A=A0=20%F=20=E5=8F=82=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E4=BF=9D=E8=AF=81=E5=8F=AF=E6=AD=A3=E7=A1=AE=E4=BC=A0?= =?UTF-8?q?=E5=85=A5=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82c3185..1808e6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,8 @@ if(CMAKE_HOST_UNIX) # 应用类型: Type= "Application" # 执行程序: Exec= - "notepad--" + # 有关此 %F 参数可查看: https://gitee.com/zinface/z-tools/blob/desktop-dev/src/DesktopGenerater/desktopexecparamdialog.cpp + "notepad-- %F" # 图标路径: Icon= "/usr/share/notepad--/icons/spark.png" # 应用分类: Category= -- Gitee From 0db7999bdbda1edb653e6b6ae465ba021fb8405c Mon Sep 17 00:00:00 2001 From: zinface Date: Thu, 2 Feb 2023 14:47:56 +0800 Subject: [PATCH 06/24] =?UTF-8?q?cmake-version:=20=E5=B0=86=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=99=8D=E5=88=B0=203.22=20=E4=BB=A5=E9=80=82?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=20cmake=20=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1808e6c..5d66bca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,4 @@ -<<<<<<< HEAD -cmake_minimum_required(VERSION 3.16) -======= -cmake_minimum_required(VERSION 3.24) +cmake_minimum_required(VERSION 3.22) project(notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) -- Gitee From 525a02e535c611f358bbf4643ca328abeeccb6d1 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 06:01:33 +0800 Subject: [PATCH 07/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=8D=B3=E5=B0=86=E5=BA=9F=E9=99=A4=E7=9A=84api=E7=94=A8?= =?UTF-8?q?=E6=B3=95=201.=20=E4=BF=AE=E6=94=B9QPalette::Background?= =?UTF-8?q?=E4=B8=BAQPalette::Window=202.=20=E4=BF=AE=E6=94=B9=E9=83=A8?= =?UTF-8?q?=E5=88=86text=E4=B8=BAtext.toUtf8()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/columnedit.cpp | 12 ++++++------ src/ctipwin.cpp | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/columnedit.cpp b/src/columnedit.cpp index 50fd9ae..2bfe682 100755 --- a/src/columnedit.cpp +++ b/src/columnedit.cpp @@ -54,7 +54,7 @@ void ColumnEdit::slot_bigChar(bool isCheck) ui.capital->setEnabled(isCheck); } -//Զǰڵ״̬ +//�Զ�������ǰ���ڵ�״̬ QWidget* ColumnEdit::autoAdjustCurrentEditWin() { QWidget* pw = m_editTabWidget->currentWidget(); @@ -93,7 +93,7 @@ void ColumnEdit::slot_ok() QString prefix = ui.prefix->text(); bool isCapital = ui.capital->isChecked(); - //Dzıģʽ + //�Dz����ı�ģʽ if (ui.textGroupBox->isChecked()) { @@ -138,7 +138,7 @@ void ColumnEdit::slot_ok() } else { - //ҪӸʾ + //����Ҫ�Ӹ���ʾ QApplication::beep(); return; } @@ -209,20 +209,20 @@ void ColumnEdit::slot_ok() lineText.chrg.cpMin = static_cast(lineBegin); lineText.chrg.cpMax = static_cast(lineEnd); lineText.lpstrText = lineData.data(); - //ȡԭʼе + //��ȡԭʼ�е����� pEdit->SendScintilla(SCI_GETTEXTRANGE, 0, &lineText); if (lineEndCol < cursorCol) { QByteArray s_space(cursorCol - lineEndCol, ' '); lineData.append(s_space); - lineData.append(text); + lineData.append(text.toUtf8()); } else { int posAbs2Start = pEdit->execute(SCI_FINDCOLUMN, i, cursorCol); int posRelative2Start = posAbs2Start - lineBegin; - lineData.insert(posRelative2Start, text); + lineData.insert(posRelative2Start, text.toUtf8()); } pEdit->SendScintilla(SCI_SETTARGETRANGE, lineBegin, lineEnd); diff --git a/src/ctipwin.cpp b/src/ctipwin.cpp index 9412777..f894ad8 100755 --- a/src/ctipwin.cpp +++ b/src/ctipwin.cpp @@ -9,7 +9,7 @@ CTipWin::CTipWin(QWidget *parent) this->setWindowFlags(Qt::ToolTip); QPalette palette(this->palette()); - palette.setColor(QPalette::Background, QColor(0xfff29d)); + palette.setColor(QPalette::Window, QColor(0xfff29d)); this->setPalette(palette); } -- Gitee From c282e6eaac02ebc355c0a71f2e3f96050779bf22 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 06:43:42 +0800 Subject: [PATCH 08/24] update CMakeLists.txt --- CMakeLists.txt | 43 ------------------------------------------- 1 file changed, 43 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d66bca..cca3aac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,29 +7,8 @@ set(CMAKE_AUTORCC ON) find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) -<<<<<<< HEAD -# TODO: use system provided libraries to build -# current status: some header can not be found,for example: Scintilla.h -find_library(QSCINTILLA_LIB_PATH qscintilla2_qt5) -find_path(QSCINTILLA_INC_PATH qsciscintilla.h PATHS /usr/include/) -find_path(SCINTILLA_INC_PATH Scintilla.h PATHS /usr/include/) -if((${QSCINTILLA_LIB_PATH} STREQUAL "QSCINTILLA_LIB_PATH-NOTFOUND") OR - (${QSCINTILLA_INC_PATH} STREQUAL "QSCINTILLA_INC_PATH-NOTFOUND") OR - (${SCINTILLA_INC_PATH} STREQUAL "SCINTILLA_INC_PATH-NOTFOUND") ) -set(NOTEPAD_USE_SYS_LIB OFF) -message("system libraries or header not found,build from local") -add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) -else() -set(NOTEPAD_USE_SYS_LIB ON) -message("use system libraries") -message("QSCINTILLA_LIB_PATH:" ${QSCINTILLA_LIB_PATH}) -message("QSCINTILLA_INC_PATH:" ${QSCINTILLA_INC_PATH}) -message("SCINTILLA_INC_PATH:" ${SCINTILLA_INC_PATH}) -endif() -======= add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) ->>>>>>> 0e50547 (add cmake support) file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui) set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui) @@ -37,29 +16,7 @@ aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC) add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) -<<<<<<< HEAD -target_include_directories(${PROJECT_NAME} PRIVATE -${PROJECT_SOURCE_DIR}/src -${PROJECT_SOURCE_DIR}/src/cceditor -) - -if(NOTEPAD_USE_SYS_LIB) -target_include_directories(${PROJECT_NAME} PRIVATE ${QSCINTILLA_INC_PATH} ${SCINTILLA_INC_PATH}) -endif() - -target_link_libraries(${PROJECT_NAME} qscintilla2_qt5 Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) - -install( - TARGETS ${PROJECT_NAME} - DESTINATION "bin" -) - -install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr - DESTINATION "/") -include(${PROJECT_SOURCE_DIR}/cmake/package_config.cmake) -include(CPack) -======= target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/src/cceditor -- Gitee From 33049cee07c353a4c04e2059993893e68dd4d578 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 15:45:11 +0800 Subject: [PATCH 09/24] =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=88=B0Win=E4=B8=8B?= =?UTF-8?q?=E4=BD=BF=E7=94=A8Cmake=E7=BC=96=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 8 +++-- Makefile | 93 +++++++------------------------------------------- getos.py | 2 ++ linux.mk | 84 +++++++++++++++++++++++++++++++++++++++++++++ win.mk | 26 ++++++++++++++ 5 files changed, 130 insertions(+), 83 deletions(-) create mode 100644 getos.py create mode 100644 linux.mk create mode 100644 win.mk diff --git a/CMakeLists.txt b/CMakeLists.txt index cca3aac..fedbd76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,18 +4,22 @@ project(notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) - +message(${CMAKE_PREFIX_PATH}) find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) +add_definitions(-D_UNICODE -DUNICODE) +if(${PLUGIN_EN} STREQUAL on) +add_definitions(-DNO_PLUGIN=1) +endif(${PLUGIN_EN}) file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui) set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui) aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC) -add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) +add_executable(${PROJECT_NAME} ${IS_WIN} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/src diff --git a/Makefile b/Makefile index b71b27f..e28a4e7 100644 --- a/Makefile +++ b/Makefile @@ -1,84 +1,15 @@ -CPUS=$(shell nproc) -CALENDAR=$(shell date '+%Y%m%d') -OSID=$(shell lsb_release -si) -OSRELEASE=$(shell lsb_release -sr) -SUFFIX= -ifneq ("$(OSID)", "") -SUFFIX=_$(OSID)$(OSRELEASE) -endif - -PROJECT_NAME=notepad-- -PACKAGE_NAME=com.hmja.notepad - -all: - mkdir -p build - cd build && cmake .. - cd build && make -j$(CPUS) - -run: all - exec $(shell find build/ -maxdepth 1 -type f -executable | grep $(PROJECT_NAME)) - -debug: - mkdir -p build - cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. - cd build && make -j$(CPUS) - -release: - mkdir -p build - cd build && cmake -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" .. - cd build && make -j$(CPUS) - -package: release - cd build && make package - tree build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)-* - dpkg-deb --contents build/$(PACKAGE_NAME)_*$(CALENDAR)*$(SUFFIX).deb - # cd build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)_*$(CALENDAR)*$(SUFFIX).deb && find . - -builddeps: - cd build && make builddeps +UNAME := $(shell python getos.py) -cpus: - @echo "CPU数量: $(CPUS)" -copytosource:package - cp build/$(PACKAGE_NAME)_*$(CALENDAR)*.deb . +ifeq ($(UNAME), linux) +all:linux +linux: + shell make -f linux.mk package +else +all:win -# 进入 qdebug 模式,在 deepin 中默认被禁用,可 env | grep QT 查看,并在 /etc/X11/Xsession.d/00deepin-dde-env 配置中已定义 -# 1. 禁止 qt 的 debug 打印: qt.*.debug=false -# qt.qpa.input.events -# qt.qpa.events -# 2. 禁止 dtk 的 debug 打印: dtk.*.debug=false -# dtk.dpluginloader -# 3. 禁止 qtcreator 本身的 debug 打印 -# qtc.autotest.testcodeparser -# qtc.clangbackend.server -# ... -# 4. 关闭其它的太麻烦了,直接只启用本地 debug -# .debug=true -enter-qdebug-mode: - # 进入新的 bash 环境 - @# export QT_LOGGING_RULES=".debug=true; qt.*.debug=false; dtk.*.debug=false; dde.*.debug=false; qtc*=false; " && bash - export QT_LOGGING_RULES=".debug=true" && bash - -# Appimage 的构建流 -- -# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) -# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt -# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool -# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 - -# 或指定你所想存放克隆项目的位置 -BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt - -download-bundle-linuxdeploytools: - -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) - -LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" -APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" - -linuxdeploy: release download-bundle-linuxdeploytools - cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) - cd build && make linuxdeploy - -genrate-appimage: - cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) - cd build && make appimage +win: + make -f win.mk release +win_plugin: + make -f win.mk release-plugin +endif diff --git a/getos.py b/getos.py new file mode 100644 index 0000000..912517c --- /dev/null +++ b/getos.py @@ -0,0 +1,2 @@ +import sys +print(sys.platform) diff --git a/linux.mk b/linux.mk new file mode 100644 index 0000000..b71b27f --- /dev/null +++ b/linux.mk @@ -0,0 +1,84 @@ +CPUS=$(shell nproc) +CALENDAR=$(shell date '+%Y%m%d') +OSID=$(shell lsb_release -si) +OSRELEASE=$(shell lsb_release -sr) +SUFFIX= +ifneq ("$(OSID)", "") +SUFFIX=_$(OSID)$(OSRELEASE) +endif + +PROJECT_NAME=notepad-- +PACKAGE_NAME=com.hmja.notepad + +all: + mkdir -p build + cd build && cmake .. + cd build && make -j$(CPUS) + +run: all + exec $(shell find build/ -maxdepth 1 -type f -executable | grep $(PROJECT_NAME)) + +debug: + mkdir -p build + cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. + cd build && make -j$(CPUS) + +release: + mkdir -p build + cd build && cmake -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" .. + cd build && make -j$(CPUS) + +package: release + cd build && make package + tree build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)-* + dpkg-deb --contents build/$(PACKAGE_NAME)_*$(CALENDAR)*$(SUFFIX).deb + # cd build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)_*$(CALENDAR)*$(SUFFIX).deb && find . + +builddeps: + cd build && make builddeps + +cpus: + @echo "CPU数量: $(CPUS)" + +copytosource:package + cp build/$(PACKAGE_NAME)_*$(CALENDAR)*.deb . + +# 进入 qdebug 模式,在 deepin 中默认被禁用,可 env | grep QT 查看,并在 /etc/X11/Xsession.d/00deepin-dde-env 配置中已定义 +# 1. 禁止 qt 的 debug 打印: qt.*.debug=false +# qt.qpa.input.events +# qt.qpa.events +# 2. 禁止 dtk 的 debug 打印: dtk.*.debug=false +# dtk.dpluginloader +# 3. 禁止 qtcreator 本身的 debug 打印 +# qtc.autotest.testcodeparser +# qtc.clangbackend.server +# ... +# 4. 关闭其它的太麻烦了,直接只启用本地 debug +# .debug=true +enter-qdebug-mode: + # 进入新的 bash 环境 + @# export QT_LOGGING_RULES=".debug=true; qt.*.debug=false; dtk.*.debug=false; dde.*.debug=false; qtc*=false; " && bash + export QT_LOGGING_RULES=".debug=true" && bash + +# Appimage 的构建流 -- +# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) +# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt +# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool +# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 + +# 或指定你所想存放克隆项目的位置 +BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt + +download-bundle-linuxdeploytools: + -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) + +LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" +APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" + +linuxdeploy: release download-bundle-linuxdeploytools + cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) + cd build && make linuxdeploy + +genrate-appimage: + cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) + cd build && make appimage diff --git a/win.mk b/win.mk new file mode 100644 index 0000000..9b5244a --- /dev/null +++ b/win.mk @@ -0,0 +1,26 @@ +CPUS=4 +SUFFIX=Nuknown + + +PROJECT_NAME=notepad-- +PACKAGE_NAME=com.hmja.notepad + +all: + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . + cd build && make + +debug: + mkdir -p build + cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. + cd build && make + +release: + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . + cd build && make + cd build && mkdir release && copy .\notepad--.exe .\release && cd release && D:/Qt/5.15.2/mingw81_64/bin/windeployqt.exe notepad--.exe + +release-plugin: + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=on -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . + cd build && make + cd build && mkdir release-plugin && copy .\notepad--.exe .\release-plugin && cd release-plugin && D:/Qt/5.15.2/mingw81_64/bin/windeployqt.exe notepad--.exe + -- Gitee From bc7c367de3df010ed57d2c31f9eca5edce85214f Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 15:49:09 +0800 Subject: [PATCH 10/24] =?UTF-8?q?python=E7=89=88=E6=9C=AC=E9=9C=80?= =?UTF-8?q?=E8=A6=813=E4=BB=A5=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e28a4e7..81cc7ce 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -UNAME := $(shell python getos.py) +UNAME := $(shell python3 getos.py) ifeq ($(UNAME), linux) -- Gitee From 5cd90b93d0d33e74c2a32ee6f7edbb62d93397a0 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 15:50:23 +0800 Subject: [PATCH 11/24] =?UTF-8?q?=E6=9B=B4=E6=AD=A3linux.mk=E7=9A=84?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 81cc7ce..63e9d38 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ UNAME := $(shell python3 getos.py) ifeq ($(UNAME), linux) all:linux linux: - shell make -f linux.mk package + make -f linux.mk package else all:win -- Gitee From 6c4533267e8651ae966e10370928bc2bdb357f15 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 15:52:21 +0800 Subject: [PATCH 12/24] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dlinux.mk=E4=B8=8D?= =?UTF-8?q?=E5=85=BC=E5=AE=B9CMakeLists.txt=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linux.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linux.mk b/linux.mk index b71b27f..6d59d25 100644 --- a/linux.mk +++ b/linux.mk @@ -25,7 +25,7 @@ debug: release: mkdir -p build - cd build && cmake -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" .. + cd build && cmake -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=off -DPACKAGE_SUFFIX="$(SUFFIX)" .. cd build && make -j$(CPUS) package: release -- Gitee From 0c0846f341f12921d9f821549264c74fecd749f2 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 15:53:51 +0800 Subject: [PATCH 13/24] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fedbd76..ed08c22 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ project(notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -message(${CMAKE_PREFIX_PATH}) + find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) -- Gitee From eb5753f7cd88a1eb332fa2ef5bbf07503d46e032 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Sun, 5 Feb 2023 22:35:20 +0800 Subject: [PATCH 14/24] =?UTF-8?q?1.=20rc=E6=96=87=E4=BB=B6=E9=80=82?= =?UTF-8?q?=E9=85=8DMinGw=E7=BC=96=E8=AF=91=E5=99=A8=202.=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81Win=E5=92=8CLinux=E4=B8=8BCmake=E7=BC=96=E8=AF=91=203.?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E6=8F=92=E4=BB=B6=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 47 +++++++++++++++++++++++---- src/RealCompare.rc | Bin 5134 -> 2505 bytes src/RealCompareToMinGw.rc | 39 ++++++++++++++++++++++ src/plugin/helloworld/CMakeLists.txt | 34 +++++++++++++++++++ src/qscint/CMakeLists.txt | 3 ++ win.bat | 29 +++++++++++++++++ win.mk | 5 ++- 7 files changed, 147 insertions(+), 10 deletions(-) create mode 100644 src/RealCompareToMinGw.rc create mode 100644 src/plugin/helloworld/CMakeLists.txt create mode 100644 win.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index ed08c22..0bc8a0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,19 +7,40 @@ set(CMAKE_AUTORCC ON) find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) +# qscint 关键依赖库 add_subdirectory(${PROJECT_SOURCE_DIR}/src/qscint) -add_definitions(-D_UNICODE -DUNICODE) -if(${PLUGIN_EN} STREQUAL on) -add_definitions(-DNO_PLUGIN=1) -endif(${PLUGIN_EN}) +# 插件库包含 +# helloworld 动态插件库 +add_subdirectory(${PROJECT_SOURCE_DIR}/src/plugin/helloworld) + +# win下需要开启UNICODE进行支持TCHAR +if(CMAKE_HOST_WIN32) + add_definitions(-D_UNICODE -DUNICODE) +endif() + + +if(${PLUGIN_EN}) + if(${PLUGIN_EN} STREQUAL on) + add_definitions(-DNO_PLUGIN=1) + endif(${PLUGIN_EN}) +endif() + + file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/src/*.ui) set(UI_SRC ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/cceditor/ccnotepad.ui) aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC) aux_source_directory(${PROJECT_SOURCE_DIR}/src/cceditor SRC) -add_executable(${PROJECT_NAME} ${IS_WIN} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) + +if(CMAKE_HOST_WIN32) +# 添加 WIN32 保证主程序启动没有命令行 + list(APPEND WIN_RCS ${PROJECT_SOURCE_DIR}/src/RealCompareToMinGw.rc) + add_executable(${PROJECT_NAME} WIN32 ${WIN_RCS} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) +else() + add_executable(${PROJECT_NAME} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) +endif() target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/src @@ -63,7 +84,7 @@ if(CMAKE_HOST_UNIX) # 1. 在顶层构建中导入 Appimage 的构建 include(cmake/SparkAppimageConfig.cmake) # 导入来自 Spark 构建的 Appimage 构建 - add_appimage_icon(assets/spark.png) # 添加到 Appimage 中的默认的图标 + add_appimage_icon(src/Resources/txt (5).png) # 添加到 Appimage 中的默认的图标 add_appimage_desktop() # 添加到 Appimage 中的默认desktop(使用来自 Spark 构建的 Desktop 构建中配置的信息(必须要求 spark-desktop)) add_appimage() # 应用对 Appimage 的构建 @@ -71,5 +92,17 @@ if(CMAKE_HOST_UNIX) # 注释行(使用方式) find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) add_package_descript(cmake/package-deb.descript) +# elseif(CMAKE_HOST_WIN32) +# set(CPACK_GENERATOR NSIS) +# set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) +# set(CPACK_PACKAGE_VENDOR "Notepad--") +# set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Notepad-- 是一个国产跨平台、简单的文本编辑器。") +# set(CPACK_PACKAGE_VERSION "1.22.0") +# set(CPACK_PACKAGE_VERSION_MAJOR "1") +# set(CPACK_PACKAGE_VERSION_MINOR "22") +# set(CPACK_PACKAGE_VERSION_PATCH "0") +# set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") +# SET(CPACK_NSIS_MODIFY_PATH ON) -endif(CMAKE_HOST_UNIX) +# INCLUDE(CPack) +endif() diff --git a/src/RealCompare.rc b/src/RealCompare.rc index 6a8f8d37265dabff9050c897da0dcaebd07d0c87..55fa7fd77d9d11d31b77a8f18a16ddb09303ee79 100755 GIT binary patch literal 2505 zcmcIm&2HO95We#%ru4-|WQn4E$dw`~bzzzmL`jGN0t6$jw1E%# z0eVUAJvHY7t=}fL+f!d5vm`}PiS6W|>_OU{otd5ezS$YJT5!xJNu0*h48|;71`+5F z9>9!pngkgQA)#r!OePf4Nx~LcQ);!O9mXfoGNd4{cAKZNB<+NB$~XnB?+!->ar}X) z8IEn8`0mMZ$FW?r-Qp0Dv|7-sLY*e@9I{giL-Wy)*t#_`Oi-&Ed=dH?;~0G&_!ff_ z=qxz`aSsYxhXFqQ_2>0(uXb-fKL2$2{{Me2aDDaRa<962isY~<{8SJW?rPmfNRI1_ z2D<4RmbC}ZoEbr+9m+%G0S6{-^-NayNIwLjF-=ky^BkSA>yOQWOB~xLcGrP&A?6ZviDi}oXg5@~ zp)?c;`UA%p>BFx#gnHM~dhW629)a@oU}}jZ6U_UD*%|c;kGTqNw{e$7DczJRLMkvR z#Ey%ahl-*cT7_VE(l-m^JUq<0Qi6tSZabEvAA#&<3FEUaizwmKxL|6nBv3CEm50iq za`+h2KnTUyR1=c1W{pgc^?1Gr__-a-soVhh`jo&uu0H;HbNTk> z@856!czgZ&`PyI2gNVnVMfF4;gclxXbPLd513H8BKT) zt>RptaBEB!oduB|FU}J-JI#dmY5}|Y9;k|{?BmbDt=0}&F+5D%jF-TCY_qo z!B=C?S1IN9pYizKYhQ;vSXfurGxy9nXU?4W_~Sp@wr!Ce*}0wB$c8rN?b!ra3)tAE zc48NN73@o%$okf`0q+R-gs}r`#3;Hcvoq!qU*dLdSKw^fXZ9((Y`bv-=z!G=usaSn zw?w~XKU&UVi*m!^^&Fjee{D6ZTf>^RZzZc*+g@1_=sxp`mF;^Vb$*X*4@jAL*k3ZN z-xH(@V`PWuWl_gHv^2C!&Obpr(nEt&f5&f$Qx`a=^ic%9%e!ci|F*%;PQRWmt^f7Y zSdhqj#}r-3lX{%{e!dYjANa1<7^I7Av+}M=BzSG8o$~@xx8&9;7vH_1*_-Pxumqgf8w`&<_1!$A;(D`D3 zcszM(5$vKpgLfUgJ$Canix`UG5;0r@qlCOAsP-4mw%Y32sl~~@nNzKoO_S0D`-X8< zWQTQ)dUw#_svMy8J&*^`}Zk1apTxJ5J<>sh(vK6_+k`J651n4BGxtB#3a zpYLNSS4s5zo)X=4pADCTJ7h)W75~U;Svh9e+k%afc3!W!B$Py9RJ~VKA9La%_6YEB zk{0pU2B%2eD>7AU+s?ZVn2S2OB8>c~ZJne{YIga<#PTJ7?icdy5;u|pLfY?50V zx1>>i&<+PKpBy6L5qYIf{73Nq#hzouvXe%h*_+o3WxOJh(j-#Svc{Y|hn+cnm)>QJ zu5QN9C-7CDv}>B8ihQ2;3uM&uVn!2dtU(`BL&CHS@w(5UX{@kwcKj>jR?)09lS6_D zHdja1M|bC(tcxZG$U0nz$ZT#QGSXc0_LV!0PISsF9osQYR(=YrVQgVX^)}K$4!P9> zUD10E>>3|C;j0T=^(1GXpMLoBkH#nOzG(dZ!?$n#e*M?=+tcj5v$+Qi?87tJ!TN{@ zy9|&)ov)1Vp7-WG)6p09N^-p`XW3D5ju_R$FKR369Cy)H8Qy)z zSys8i9`d9<-RWd*k>!<${-fYJj9oOPchmju5~Fw7y*k@XzN^y(+vzLm6AwLQjeUmL zdCHw-^1tga&HW)h5ZCSCXUmXul(x{+Xs);WM149o8*o!xjZFSqKy zxQnay5RJHA@aSHDJzKqG^tVb$TyniYfyz>GeQEH)tg%G=3omOe3znlFNdLbureiz? zrm8w|^FGoIsWp;QYpS>% + +IDI_ICON1 ICON DISCARDABLE "D:\\Qt\\CodeWorkspace\\notepad--\\src\\Resources\\edit\\global\\ndd.ico" + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,22,0,0 + PRODUCTVERSION 1,22,0,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE 0x0L + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080404b0" + BEGIN + VALUE "CompanyName", "成都和茂君安网络科技\0" + VALUE "FileDescription", "notepad-- v1.22.0\0" + VALUE "FileVersion", "1.22.0.0\0" + VALUE "LegalCopyright", "Copyright (C) 2020-2023\0" + VALUE "OriginalFilename", "Notepad--.exe\0" + VALUE "ProductName", "notepad-- \0" + VALUE "ProductVersion", "1.22.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0804, 1200 + END + END +/* End of Version info */ + diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt new file mode 100644 index 0000000..7afd2d9 --- /dev/null +++ b/src/plugin/helloworld/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required(VERSION 3.22) +project(helloworld) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTORCC ON) + +find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Concurrent Network PrintSupport XmlPatterns) + +add_definitions(-D_UNICODE -DUNICODE) + + + + +file(GLOB UI_SRC ${PROJECT_SOURCE_DIR}/*.ui) +file(GLOB SRC ${PROJECT_SOURCE_DIR}/*.cpp) +file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/*.h) +# add_executable(${PROJECT_NAME} ${IS_WIN} ${SRC} ${UI_SRC} ${PROJECT_SOURCE_DIR}/src/RealCompare.qrc) + +add_library(${PROJECT_NAME} SHARED ${SRC} ${UI_SRC} ${MOC_HEADER}) + +target_include_directories(${PROJECT_NAME} PRIVATE +${PROJECT_SOURCE_DIR} + +${PROJECT_SOURCE_DIR}/../../include +${PROJECT_SOURCE_DIR}/../../qscint/src +${PROJECT_SOURCE_DIR}/../../qscint/src/Qsci +${PROJECT_SOURCE_DIR}/../../qscint/scintilla/src +${PROJECT_SOURCE_DIR}/../../qscint/scintilla/include +${PROJECT_SOURCE_DIR}/../../qscint/scintilla/lexlib +${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex +) + +target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index 77f02f2..cbaa66b 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -19,6 +19,9 @@ file(GLOB MOC_HEADER ${PROJECT_SOURCE_DIR}/src/Qsci/*.h) add_library(${PROJECT_NAME} STATIC ${SRC} ${MOC_HEADER}) +# add_definitions(-DQSCINTILLA_MAKE_DLL) +# add_library(${PROJECT_NAME} SHARED ${SRC} ${MOC_HEADER}) + target_compile_definitions(${PROJECT_NAME} PRIVATE SCINTILLA_QT SCI_LEXER INCLUDE_DEPRECATED_FEATURES) target_include_directories(${PROJECT_NAME} PRIVATE diff --git a/win.bat b/win.bat new file mode 100644 index 0000000..40e99bc --- /dev/null +++ b/win.bat @@ -0,0 +1,29 @@ +cd build +if exist %1 ( + @echo "%1 ļѴ" +) else ( + mkdir %1 +) +copy .\notepad--.exe .\%1 +cd %1 +windeployqt notepad--.exe + +@REM if exist plugin ( +@REM @echo "plugin ļѴ" +@REM cd .. +@REM ) else ( +@REM mkdir plugin +@REM cd .. +@REM ) + +@REM @echo off ==> @echo ǴӡϢûʵ +@REM set target_path=build\src\plugin\helloworld\helloworld_autogen ==> ָļڵ̻Ŀ¼ +@REM set copy_target_path=C:\Users\dulun\Desktop\copy ==> ָļ洢Ŀ¼ȽĿ¼ +@REM set vcffile=*.vcf ==> ָļͣ.vcfΪ׺ +@REM C: ==> ָļڵ̣C̣һҪָ +@REM cd %target_path% ==> ָļĿ¼СһƥķΧʱ +@REM for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do ( +@REM echo %%s +@REM copy /y "%%s" %copy_target_path% +@REM ) ==> ָĿ¼ƥָļļ֣ļ +@REM pause ==> ִкʾ밴... \ No newline at end of file diff --git a/win.mk b/win.mk index 9b5244a..b8c2fb9 100644 --- a/win.mk +++ b/win.mk @@ -17,10 +17,9 @@ debug: release: cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . cd build && make - cd build && mkdir release && copy .\notepad--.exe .\release && cd release && D:/Qt/5.15.2/mingw81_64/bin/windeployqt.exe notepad--.exe + win.bat release release-plugin: cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=on -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . cd build && make - cd build && mkdir release-plugin && copy .\notepad--.exe .\release-plugin && cd release-plugin && D:/Qt/5.15.2/mingw81_64/bin/windeployqt.exe notepad--.exe - + ./win.bat release-plugin -- Gitee From 421cdc439ab254ca37d95d437ba5ff1de270a66d Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 18:11:58 +0800 Subject: [PATCH 15/24] =?UTF-8?q?1.=20=E4=BC=98=E5=8C=96CMake=202.=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0NSIS=E6=89=93=E5=8C=85=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 69 ++++++------------ assets/spark.png | Bin 4959 -> 0 bytes ..._config.cmake => deb_package_config.cmake} | 0 cmake/nisi_package_config.cmake | 62 ++++++++++++++++ cmake/notepad--.ico | Bin 0 -> 16958 bytes linux.mk | 40 ---------- src/RealCompareToMinGw.rc | 1 - src/plugin/helloworld/CMakeLists.txt | 2 +- src/qscint/CMakeLists.txt | 2 +- 9 files changed, 85 insertions(+), 91 deletions(-) delete mode 100644 assets/spark.png rename cmake/{package_config.cmake => deb_package_config.cmake} (100%) create mode 100644 cmake/nisi_package_config.cmake create mode 100644 cmake/notepad--.ico diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bc8a0a..ec97fa6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.22) +cmake_minimum_required(VERSION 3.16) project(notepad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) @@ -57,52 +57,25 @@ ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) if(CMAKE_HOST_UNIX) - include(cmake/SparkInstallMacrosConfig.cmake) - include(cmake/SparkDesktopMacros.cmake) - # 内容默认应用名称: Name= 应与项目名称相同 - spark_desktop_macros( - # 应用名称: Name= - ${PROJECT_NAME} - # 应用名称: Name[zh_CN]= - "Notepad--" - # 应用说明: Comment= - "Notepad-- 是一个国产跨平台、简单的文本编辑器。" - # 应用类型: Type= - "Application" - # 执行程序: Exec= - # 有关此 %F 参数可查看: https://gitee.com/zinface/z-tools/blob/desktop-dev/src/DesktopGenerater/desktopexecparamdialog.cpp - "notepad-- %F" - # 图标路径: Icon= - "/usr/share/notepad--/icons/spark.png" - # 应用分类: Category= - "Development" + install( + TARGETS ${PROJECT_NAME} + DESTINATION "bin" ) - spark_install_file(/usr/share/applications/ ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.desktop) - spark_install_file(/usr/share/notepad--/icons/ assets/spark.png) - spark_install_target(/usr/bin/ ${PROJECT_NAME}) - - - # 1. 在顶层构建中导入 Appimage 的构建 - include(cmake/SparkAppimageConfig.cmake) # 导入来自 Spark 构建的 Appimage 构建 - add_appimage_icon(src/Resources/txt (5).png) # 添加到 Appimage 中的默认的图标 - add_appimage_desktop() # 添加到 Appimage 中的默认desktop(使用来自 Spark 构建的 Desktop 构建中配置的信息(必须要求 spark-desktop)) - add_appimage() # 应用对 Appimage 的构建 - - - # 注释行(使用方式) - find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) - add_package_descript(cmake/package-deb.descript) -# elseif(CMAKE_HOST_WIN32) -# set(CPACK_GENERATOR NSIS) -# set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) -# set(CPACK_PACKAGE_VENDOR "Notepad--") -# set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Notepad-- 是一个国产跨平台、简单的文本编辑器。") -# set(CPACK_PACKAGE_VERSION "1.22.0") -# set(CPACK_PACKAGE_VERSION_MAJOR "1") -# set(CPACK_PACKAGE_VERSION_MINOR "22") -# set(CPACK_PACKAGE_VERSION_PATCH "0") -# set(CPACK_PACKAGE_INSTALL_DIRECTORY "CPack Component Example") -# SET(CPACK_NSIS_MODIFY_PATH ON) - -# INCLUDE(CPack) + + install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr + DESTINATION "/") + + include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake) + include(CPack) +elseif(CMAKE_HOST_WIN32) + install(s + TARGETS ${PROJECT_NAME} + DESTINATION "bin" + ) + + install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr + DESTINATION "/") + + include(${PROJECT_SOURCE_DIR}/cmake/nsin_package_config.cmake) + include(CPack) endif() diff --git a/assets/spark.png b/assets/spark.png deleted file mode 100644 index 544e2c7cff5f70894e27a7a717d4a62120630b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4959 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 diff --git a/cmake/package_config.cmake b/cmake/deb_package_config.cmake similarity index 100% rename from cmake/package_config.cmake rename to cmake/deb_package_config.cmake diff --git a/cmake/nisi_package_config.cmake b/cmake/nisi_package_config.cmake new file mode 100644 index 0000000..46f8316 --- /dev/null +++ b/cmake/nisi_package_config.cmake @@ -0,0 +1,62 @@ +set(CPACK_GENERATOR NSIS) +set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}") +set(CPACK_PACKAGE_CONTACT "XiaoPb") + +set(CPACK_PACKAGE_VERSION "1.0.0") +set(CPACK_PACKAGE_VERSION_MAJOR "1") +set(CPACK_PACKAGE_VERSION_MINOR "0") +set(CPACK_PACKAGE_VERSION_PATCH "0") +# set(CPACK_PACKAGE_VERSION_PATCH "0") + +set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +set(CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_NSIS_MODIFY_PATH "ON") +set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") +set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/notepad--.ico") +set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/notepad--.ico") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License") + +set (CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ) + +set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS " + WriteRegStr SHCTX 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${PROJECT_NAME}' '' '$INSTDIR\\\\${PROJECT_NAME}.exe' + WriteRegStr SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell' '' 'open' + WriteRegStr SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell\\\\open\\\\command' '' '$\\\'$INSTDIR\\\\${PROJECT_NAME}.exe$\\\' $\\\'%1$\\\'' + WriteRegStr SHCTX 'Software\\\\Classes\\\\.txt\\\\OpenWithProgids' '${PROJECT_NAME}' '' + WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' '' 'Edit with ${PROJECT_NAME}' + WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' 'Icon' '$INSTDIR\\\\${PROJECT_NAME}.exe' + WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\\command' '' '$\\\'$INSTDIR\\\\${PROJECT_NAME}.exe$\\\' $\\\'%1$\\\'' + ") + +set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " + Delete '$DESKTOP\\\\${PROJECT_NAME}.lnk' + Delete '$SMPROGRAMS\\\\${PROJECT_NAME}.lnk' + DeleteRegKey SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' + DeleteRegKey SHCTX 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${PROJECT_NAME}.exe' '' '$INSTDIR\\\\${PROJECT_NAME}.exe' + DeleteRegKey SHCTX 'Software\\\\${PROJECT_NAME}\' + DeleteRegValue SHCTX 'Software\\\\Classes\\\\.txt\\\\OpenWithProgids' '${PROJECT_NAME}' + DeleteRegKey SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}' + ") + +# 创建任意快捷方式 +#CreateShortCut "$DESKTOP\${PROJECT_NAME}.lnk" "$INSTDIR\release\${PROJECT_NAME}.exe" +# ;创建开始菜单快捷方式 +# ExecShell "startpin" "$DESKTOP\${PROJECT_NAME}.lnk" +# ;创建任务栏快捷方式 +# ExecShell "taskbarpin" "$DESKTOP\${PROJECT_NAME}.lnk" +# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "CreateShortCut \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\" \\\\\"$INSTDIR\\\\release\\\\${PROJECT_NAME}.exe\\\\\"") +# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecShell \\\\\"startpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") +# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecShell \\\\\"taskbarpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") + +# ;删除开始菜单快捷方式 +# ExecShell "startunpin" "$DESKTOP\${PROJECT_NAME}.lnk" +# ;删除任务栏快捷方式 +# ExecShell "taskbarunpin" "$DESKTOP\${PROJECT_NAME}.lnk" +# 删除桌面的快捷方式 +# Delete "$DESKTOP\${PRODUCT_NAME}.lnk" +# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecShell \\\\\"startunpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") +# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecShell \\\\\"taskbarunpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") +# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "Delete \\\\\"$DESKTOP\\\\${PRODUCT_NAME}.lnk\\\\\"") diff --git a/cmake/notepad--.ico b/cmake/notepad--.ico new file mode 100644 index 0000000000000000000000000000000000000000..fce8b8facfc7ea6e83dbca7a208092adb6fb6b2f GIT binary patch literal 16958 zcmeI3zfJ-{5XKiMDB&c*n3!N;LE|$(sEMV|V5RW|#NJYm#MXpZ*xFfWWp8~DqlqSj z#zqUHt~=Z&1mxcxx9bjmOO{E7yXAi0?C#7#PKcCxRjWe1Z-{bDh@udpth#cEBh|^@ zZ`IJ?9ST4JC@@Qbm$S8WyXn<~=E`21S*L3b)U^}CEY3-v2fo)*<4E4!Yfa*t<`4Wr zkvI1sZk=Xwbh{&~8r$+ySrL_3YiW&X##PE+UEp8uve;*JY`yX!x0oJ^gE`2Xwpe+4Jrx=Z)J zrsny$aoc`=H!3?FPitn}c$|E3*_VNT5q9qUi?Va(PlBB*e^Trm`IBVl#-B7hCw>#` zT=-3~bKp10?mE9|c9;2WuoJ(F&%fAWCw^+``Kb$6?ssgn6aW43YFcTqtu*-4=ih?U ze4VZb4GKU3D3GKA^ZqaU9e!y8wl73f9b~9mO52RKS#5LLmb9&C+t5~qHl=Mw+pM-Z MZA;o#=8dY9KQ75*EdT%j literal 0 HcmV?d00001 diff --git a/linux.mk b/linux.mk index 6d59d25..7850449 100644 --- a/linux.mk +++ b/linux.mk @@ -32,7 +32,6 @@ package: release cd build && make package tree build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)-* dpkg-deb --contents build/$(PACKAGE_NAME)_*$(CALENDAR)*$(SUFFIX).deb - # cd build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)_*$(CALENDAR)*$(SUFFIX).deb && find . builddeps: cd build && make builddeps @@ -43,42 +42,3 @@ cpus: copytosource:package cp build/$(PACKAGE_NAME)_*$(CALENDAR)*.deb . -# 进入 qdebug 模式,在 deepin 中默认被禁用,可 env | grep QT 查看,并在 /etc/X11/Xsession.d/00deepin-dde-env 配置中已定义 -# 1. 禁止 qt 的 debug 打印: qt.*.debug=false -# qt.qpa.input.events -# qt.qpa.events -# 2. 禁止 dtk 的 debug 打印: dtk.*.debug=false -# dtk.dpluginloader -# 3. 禁止 qtcreator 本身的 debug 打印 -# qtc.autotest.testcodeparser -# qtc.clangbackend.server -# ... -# 4. 关闭其它的太麻烦了,直接只启用本地 debug -# .debug=true -enter-qdebug-mode: - # 进入新的 bash 环境 - @# export QT_LOGGING_RULES=".debug=true; qt.*.debug=false; dtk.*.debug=false; dde.*.debug=false; qtc*=false; " && bash - export QT_LOGGING_RULES=".debug=true" && bash - -# Appimage 的构建流 -- -# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) -# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt -# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool -# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 - -# 或指定你所想存放克隆项目的位置 -BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt - -download-bundle-linuxdeploytools: - -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) - -LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" -APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" - -linuxdeploy: release download-bundle-linuxdeploytools - cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) - cd build && make linuxdeploy - -genrate-appimage: - cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) - cd build && make appimage diff --git a/src/RealCompareToMinGw.rc b/src/RealCompareToMinGw.rc index 30ab52a..5c9828f 100644 --- a/src/RealCompareToMinGw.rc +++ b/src/RealCompareToMinGw.rc @@ -21,7 +21,6 @@ VS_VERSION_INFO VERSIONINFO BEGIN BLOCK "080404b0" BEGIN - VALUE "CompanyName", "成都和茂君安网络科技\0" VALUE "FileDescription", "notepad-- v1.22.0\0" VALUE "FileVersion", "1.22.0.0\0" VALUE "LegalCopyright", "Copyright (C) 2020-2023\0" diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt index 7afd2d9..336f250 100644 --- a/src/plugin/helloworld/CMakeLists.txt +++ b/src/plugin/helloworld/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.22) +cmake_minimum_required(VERSION 3.16) project(helloworld) set(CMAKE_AUTOMOC ON) diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index cbaa66b..4a0f998 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.22) +cmake_minimum_required(VERSION 3.16) project(qscint CXX) set(CMAKE_AUTOMOC ON) -- Gitee From 6ac7d992f428477f44a34d4c8c36e0912ad4244a Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 21:30:00 +0800 Subject: [PATCH 16/24] =?UTF-8?q?1.=20=E5=8E=BB=E9=99=A4SPARK=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=202.=20=E5=AE=9E=E7=8E=B0CPACK+NSIS=E6=89=93=E5=8C=85?= =?UTF-8?q?=EF=BC=8C=E5=B7=B2=E9=AA=8C=E8=AF=81=E9=80=9A=E8=BF=87=203.=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96Makefile=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 20 +- Makefile | 23 +- cmake/DebPackageConfig.cmake | 323 --------------------------- cmake/SparkAppimageConfig.cmake | 139 ------------ cmake/SparkDesktopMacros.cmake | 35 --- cmake/SparkInstallMacrosConfig.cmake | 131 ----------- cmake/nisi_package_config.cmake | 62 ----- cmake/notepad--.ico | Bin 16958 -> 0 bytes cmake/nsis_package_config.cmake | 59 +++++ cmake/package-deb.descript | 45 ---- cmake/spark-appimage.desktop.in | 10 - cmake/spark-desktop.desktop.in | 12 - getos.py | 2 - win.bat | 8 +- win.mk | 38 ++-- 15 files changed, 116 insertions(+), 791 deletions(-) delete mode 100644 cmake/DebPackageConfig.cmake delete mode 100644 cmake/SparkAppimageConfig.cmake delete mode 100644 cmake/SparkDesktopMacros.cmake delete mode 100644 cmake/SparkInstallMacrosConfig.cmake delete mode 100644 cmake/nisi_package_config.cmake delete mode 100644 cmake/notepad--.ico create mode 100644 cmake/nsis_package_config.cmake delete mode 100644 cmake/package-deb.descript delete mode 100644 cmake/spark-appimage.desktop.in delete mode 100644 cmake/spark-desktop.desktop.in delete mode 100644 getos.py diff --git a/CMakeLists.txt b/CMakeLists.txt index ec97fa6..4fc0516 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -68,14 +68,20 @@ if(CMAKE_HOST_UNIX) include(${PROJECT_SOURCE_DIR}/cmake/deb_package_config.cmake) include(CPack) elseif(CMAKE_HOST_WIN32) - install(s - TARGETS ${PROJECT_NAME} - DESTINATION "bin" - ) + install(TARGETS ${PROJECT_NAME} + DESTINATION "bin") - install(DIRECTORY ${PROJECT_SOURCE_DIR}/src/linux/usr + install(DIRECTORY ${PROJECT_SOURCE_DIR}/build/bin DESTINATION "/") - - include(${PROJECT_SOURCE_DIR}/cmake/nsin_package_config.cmake) + # 设置软件版本 + set(CPACK_PACKAGE_NAME "NotePad") + set(CPACK_PACKAGE_DESCRIPTION "NotePad--") + set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023") + set(CPACK_PACKAGE_VERSION "1.22.0") + set(CPACK_PACKAGE_VERSION_MAJOR "1") + set(CPACK_PACKAGE_VERSION_MINOR "22") + set(CPACK_PACKAGE_VERSION_PATCH "0") + + include(${PROJECT_SOURCE_DIR}/cmake/nsis_package_config.cmake) include(CPack) endif() diff --git a/Makefile b/Makefile index 63e9d38..8f3a3e2 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,30 @@ -UNAME := $(shell python3 getos.py) +UNAME:=WIN32 +UNAME:=$(shell uname) -ifeq ($(UNAME), linux) +ifeq ($(UNAME), Linux) all:linux linux: make -f linux.mk package else -all:win +all:win_all_plugin + +win_all: + make -f win.mk all + +win_all_plugin: + make -f win.mk all_plugin + +win_all_noplugin: + make -f win.mk all_plugin win: make -f win.mk release + win_plugin: - make -f win.mk release-plugin + make -f win.mk release_plugin + +win_package: + make -f win.mk package + endif diff --git a/cmake/DebPackageConfig.cmake b/cmake/DebPackageConfig.cmake deleted file mode 100644 index cfba051..0000000 --- a/cmake/DebPackageConfig.cmake +++ /dev/null @@ -1,323 +0,0 @@ -cmake_minimum_required(VERSION 3.0.0) - -# function(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION) - -# endfunction(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION) - -# if(add_deb_package VALUE) set(Package ${VALUE} PARENT_SCOPE) endif(add_deb_package VALUE) -# if(add_deb_version VALUE) set(Version ${VALUE} PARENT_SCOPE) endif(add_deb_version VALUE) -# if(add_deb_maintainer VALUE) set(Maintainer ${VALUE} PARENT_SCOPE) endif(add_deb_maintainer VALUE) -# if(add_deb_email VALUE) set(Email ${VALUE} PARENT_SCOPE) endif(add_deb_email VALUE) -# if(add_deb_descrition VALUE) set(Descrition ${VALUE} PARENT_SCOPE) endif(add_deb_descrition VALUE) -# if(add_deb_detail VALUE) set(Detail ${VALUE} PARENT_SCOPE) endif(add_deb_detail VALUE) - - -# set(Package "") -# set(Version "") -# set(Architecture "") -# set(Maintainer "") -# set(Email "") -# set(Descrition "") - -function(find_str _IN _SEP _OUT) - string(FIND "${_IN}" "${_SEP}" _TMP) - set(${_OUT} ${_TMP} PARENT_SCOPE) -endfunction(find_str _IN _SEP _OUT) - - -function(find_next _IN _OUT) - find_str("${_IN}" "\n" _TMP) - set(${_OUT} ${_TMP} PARENT_SCOPE) -endfunction(find_next _IN _OUT) - -function(sub_next _IN _INDEX _OUT __OUT) - find_next(${_IN} _NEXTINDEX) - string(SUBSTRING "${_IN}" ${_INDEX} ${_NEXTINDEX} _TMP) - math(EXPR _NEXTINDEX ${_NEXTINDEX}+1) - string(SUBSTRING "${_IN}" ${_NEXTINDEX} -1 __TMP) - set(${_OUT} ${_TMP} PARENT_SCOPE) - set(${__OUT} ${__TMP} PARENT_SCOPE) -endfunction(sub_next _IN _INDEX _OUT) - -function(trim_str _IN _OUT) - string(STRIP "${_IN}" _TMP) - set(${_OUT} ${_TMP} PARENT_SCOPE) -endfunction(trim_str _IN _OUT) - -function(split_str _IN _SEP _OUT) - string(FIND "${_IN}" "${_SEP}" _TMP_INDEX) - if(NOT _TMP_INDEX EQUAL -1) - string(SUBSTRING "${_IN}" 0 ${_TMP_INDEX} _TMP) - math(EXPR _TMP_INDEX ${_TMP_INDEX}+1) - string(SUBSTRING "${_IN}" ${_TMP_INDEX} -1 __TMP) - set(${_OUT} "${_TMP};${__TMP}" PARENT_SCOPE) - else() - set(${_OUT} ${_IN} PARENT_SCOPE) - endif(NOT _TMP_INDEX EQUAL -1) -endfunction(split_str _IN _SEP _OUT) - -function(split_str_p _IN _SEP _OUT __OUT) - split_str("${_IN}" "${_SEP}" _TMP) - list(GET _TMP 0 __TMP) - list(GET _TMP 1 ___TMP) - set(${_OUT} ${__TMP} PARENT_SCOPE) - set(${__OUT} ${___TMP} PARENT_SCOPE) -endfunction(split_str_p _IN _SEP _OUT __OUT) - -function(split_str_n _IN _SEP _OUT _N) - if(_N GREATER 1) - set(_C ${_N}) - set(_RET "") - set(_NEXT ${_IN}) - while(NOT _C EQUAL 0) - split_str("${_NEXT}" "${_SEP}" _TMP) - list(LENGTH _TMP _TMP_LEN) - if(_TMP_LEN EQUAL 2) - list(GET _TMP 0 __TMP) - list(GET _TMP 1 _NEXT) - list(APPEND _RET ${__TMP}) - else() - break() - endif(_TMP_LEN EQUAL 2) - math(EXPR _C "${_C}-1") - endwhile(NOT _C EQUAL 0) - list(APPEND _RET ${_NEXT}) - set(${_OUT} ${_RET} PARENT_SCOPE) - else() - split_str("${_IN}" "${_SEP}" _TMP) - set(${_OUT} ${_TMP} PARENT_SCOPE) - endif(_N GREATER 1) -endfunction(split_str_n _IN _SEP _OUT _N) - - -function(set_package_vars _IN_KEY _IN_VAL) - - # trim_str("${_IN_KEY}" _IN_KEY) - - find_str("${_IN_KEY}" "Type" _Type) - if(_Type EQUAL "0") - string(TOUPPER "${_IN_VAL}" _IN_VAL_UPPER) - string(TOLOWER "${_IN_VAL}" _IN_VAL_LOWER) - set(CPACK_GENERATOR "${_IN_VAL_UPPER}" PARENT_SCOPE) - message("--> 软件包类型: ${_IN_VAL_LOWER}") - endif(_Type EQUAL "0") - - find_str("${_IN_KEY}" "Package" _Package) - if(_Package EQUAL "0") - if(_IN_VAL STREQUAL "auto") - set(CPACK_DEBIAN_PACKAGE_NAME "${PROJECT_NAME}" PARENT_SCOPE) - else() - set(CPACK_DEBIAN_PACKAGE_NAME "${_IN_VAL}" PARENT_SCOPE) - endif(_IN_VAL STREQUAL "auto") - message("--> 软件包名: ${_IN_VAL}") - endif(_Package EQUAL "0") - - find_str("${_IN_KEY}" "Version" _Version) - if(_Version EQUAL "0") - if(_IN_VAL STREQUAL "auto") - set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}" PARENT_SCOPE) - else() - set(CPACK_DEBIAN_PACKAGE_VERSION "${_IN_VAL}" PARENT_SCOPE) - endif(_IN_VAL STREQUAL "auto") - - message("--> 软件版本: ${_IN_VAL}") - endif(_Version EQUAL "0") - - find_str("${_IN_KEY}" "CalVer" _CalVer) - if(_CalVer EQUAL "0") - set(CalVer "${_IN_VAL}" PARENT_SCOPE) - message("--> 日历化版本: ${_IN_VAL}") - endif(_CalVer EQUAL "0") - - find_str("${_IN_KEY}" "Architecture" _Architecture) - if(_Architecture EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_IN_VAL}" PARENT_SCOPE) - if(_IN_VAL STREQUAL "auto") - execute_process( - COMMAND dpkg --print-architecture - OUTPUT_VARIABLE _RETV - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_RETV}" PARENT_SCOPE) - endif(_IN_VAL STREQUAL "auto") - message("--> 软件架构: ${_IN_VAL}") - endif(_Architecture EQUAL "0") - - find_str("${_IN_KEY}" "Priority" _Priority) - if(_Priority EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_PRIORITY "${_IN_VAL}" PARENT_SCOPE) - message("--> 优先级: ${_IN_VAL}") - endif(_Priority EQUAL "0") - - find_str("${_IN_KEY}" "Depends" _Depends) - if(_Depends EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_DEPENDS "${_IN_VAL}" PARENT_SCOPE) - message("--> 软件依赖: ${_IN_VAL}") - endif(_Depends EQUAL "0") - - find_str("${_IN_KEY}" "Maintainer" _Maintainer) - if(_Maintainer EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${_IN_VAL}" PARENT_SCOPE) - message("--> 软件维护者: ${_IN_VAL}") - endif(_Maintainer EQUAL "0") - - find_str("${_IN_KEY}" "Homepage" _Homepage) - if(_Homepage EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${_IN_VAL}" PARENT_SCOPE) - message("--> 软件主页: ${_IN_VAL}") - endif(_Homepage EQUAL "0") - - find_str("${_IN_KEY}" "Recommends" _Recommends) - if(_Recommends EQUAL "0") - set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "${_IN_VAL}" PARENT_SCOPE) - message("--> 软件建议: ${_IN_VAL}") - endif(_Recommends EQUAL "0") - -endfunction(set_package_vars _IN_KEY _IN_VAL) - -# 定义一个自定义(add_package_descript)函数 -# 用于按特定配置约定自动化构建软件包配置 -function(add_package_descript IN_DES) - set(PACKAGE_DES_PATH "${IN_DES}") - - if(EXISTS ${IN_DES}) - - elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}") - set(PACKAGE_DES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}") - else() - message(FATAL_ERROR "!! Not Found Path: ${PACKAGE_DES_PATH}") - return() - endif(EXISTS ${IN_DES}) - - file(READ ${PACKAGE_DES_PATH} DES_CONTENT) - trim_str("${DES_CONTENT}" DES_CONTENT) - - ################## 解析 ################## - - sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) - set(PREV_DES "") - while(NOT DES_LINE STREQUAL "${PREV_DES}") - # 检查该描述行是否是 # 注释开头,是的话将跳过该行 - find_str("${DES_LINE}" "#" _COMMENT) - if(_COMMENT EQUAL "0") - message("--> !!!!!!! ${DES_LINE}") - sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) - continue() - endif(_COMMENT EQUAL "0") - - # 检查该描述行是否是 Descrition 开头,是的话说明描述结尾了 - find_str("${DES_LINE}" "Descrition" _DESCRIPTION) - if(_DESCRIPTION EQUAL "0") - break() - endif(_DESCRIPTION EQUAL "0") - - split_str_n("${DES_LINE}" ":" _TMP 1) - list(LENGTH _TMP _TMP_LEN) - - if(_TMP_LEN EQUAL 2) - split_str_p("${DES_LINE}" ":" _TMP __TMP) - trim_str("${__TMP}" __TMP) - string(LENGTH "${__TMP}" __TMP_LENGTH) - if(NOT __TMP_LENGTH EQUAL "0") - set_package_vars("${_TMP}" "${__TMP}") - endif(NOT __TMP_LENGTH EQUAL "0") - endif(_TMP_LEN EQUAL 2) - - # 记录当前行,获取下一行,可能是已经结尾了(将保持重复行) - set(PREV_DES "${DES_LINE}") - sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) - endwhile(NOT DES_LINE STREQUAL "${PREV_DES}") - - - # 再一次检查该描述行是否是 Descrition 开头,是的话将进行分析描述行 - find_str("${DES_LINE}" "Descrition" _DESCRIPTION) - if(_DESCRIPTION EQUAL "0") - split_str_p("${DES_LINE}" ":" _TMP __TMP) - trim_str("${__TMP}" __TMP) - set(Descrition ${__TMP}) - set(PREV_DES_LINE "") - while(NOT PREV_DES_LINE STREQUAL DES_LINE) - if(NOT PREV_DES_LINE STREQUAL "") - set(Descrition "${Descrition}\n${DES_LINE}") - endif(NOT PREV_DES_LINE STREQUAL "") - set(PREV_DES_LINE "${DES_LINE}") - sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT) - endwhile(NOT PREV_DES_LINE STREQUAL DES_LINE) - # set(Descrition "${Descrition}") - message("--> 软件说明: ${Descrition}") - - set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${Descrition}) - endif(_DESCRIPTION EQUAL "0") - - ##################### deb ##################### - # ARCHITECTURE - if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") - set(ARCHITECTURE "amd64") - elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") - set(ARCHITECTURE "arm64") - endif() - - #################### Calendar Version ################### - if("${CalVer}" STREQUAL "true") - string(TIMESTAMP BUILD_TIME "%Y%m%d") - set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}-${BUILD_TIME}") - endif("${CalVer}" STREQUAL "true") - - - - ##################### deb file name ##################### - set(_Package "${CPACK_DEBIAN_PACKAGE_NAME}") - set(_Version "${CPACK_DEBIAN_PACKAGE_VERSION}") - set(_Architecture "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") - - set(_DebFileName - "${_Package}_${_Version}_${_Architecture}${PACKAGE_SUFFIX}.deb" - ) - set(CPACK_DEBIAN_FILE_NAME ${_DebFileName}) - - - # set(CPACK_DEBIAN_PACKAGE_NAME "${Package}") - # set(CPACK_DEBIAN_PACKAGE_VERSION "${Version}") - # set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${Architecture}") - # set(CPACK_DEBIAN_PACKAGE_DEPENDS "${Depends}") - # set(CPACK_DEBIAN_PACKAGE_PRIORITY "${Priority}") - # set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${Maintainer}") - # set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "${Descrition}") - - # 设置即将使用的标准脚本 - # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA - # "${CMAKE_SOURCE_DIR}/config/DEBIAN/preinst" - # "${CMAKE_SOURCE_DIR}/config/DEBIAN/postinst" - # "${CMAKE_SOURCE_DIR}/config/DEBIAN/prerm" - # "${CMAKE_SOURCE_DIR}/config/DEBIAN/postrm" - # ) - - # 设置为ON,以便使用 dpkg-shlibdeps 生成更好的包依赖列表。 - # set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) - # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON) - # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=") - - include(CPack) - -endfunction(add_package_descript IN_DES) - - -# TODO: -# CPACK_GENERATOR -# CPACK_DEBIAN_FILE_NAME - n -# CPACK_DEBIAN_PACKAGE_NAME - y -# CPACK_DEBIAN_PACKAGE_VERSION - y -# CPACK_DEBIAN_PACKAGE_ARCHITECTURE - y(auto) -# CPACK_DEBIAN_PACKAGE_DEPENDS - y -# CPACK_DEBIAN_PACKAGE_PRIORITY - y -# CPACK_DEBIAN_PACKAGE_MAINTAINER - y -# CPACK_DEBIAN_PACKAGE_DESCRIPTION - y - -# ARCHITECTURE -# if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64") -# set(ARCHITECTURE "amd64") -# elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64") -# set(ARCHITECTURE "arm64") -# endif() - -# string(TIMESTAMP BUILD_TIME "%Y%m%d") diff --git a/cmake/SparkAppimageConfig.cmake b/cmake/SparkAppimageConfig.cmake deleted file mode 100644 index 7463a48..0000000 --- a/cmake/SparkAppimageConfig.cmake +++ /dev/null @@ -1,139 +0,0 @@ -# export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH -# export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH -# export QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins:$QT_PLUGIN_PATH -# export QML2_IMPORT_PATH=/usr/lib/x86_64-linux-gnu/qt5/qml:$QML2_IMPORT_PATH - -# export PATH=/usr/lib/x86_64-linux-gnu/qt5/bin:$PATH -# ~/linuxdeployqt-continuous-x86_64.AppImage spark-store-submitter -appimage -# cd .. -# ~/appimagetool-x86_64.AppImage appimage/ - -# LINUXDEPLOYQT=/home/zinface/linuxdeployqt-continuous-x86_64.AppImage -# APPIMAGETOOL=/home/zinface/appimagetool-x86_64.AppImage - -# if () -set(APPIMAGE_OUTPUT "${CMAKE_BINARY_DIR}/appimage") -set(APPIMAGE_ICON "${APPIMAGE_OUTPUT}/default.png") -set(APPIMAGE_DESTKOP "${APPIMAGE_OUTPUT}/default.desktop") -# set(LINUXDEPLOYQT) -# set(APPIMAGETOOL) - -function(execute_linuxdeploy _PATH) - execute_process(COMMAND ${LINUXDEPLOYQT} - WORKING_DIRECTORY "${APPIMAGE_OUTPUT}" - ) -endfunction(execute_linuxdeploy _PATH) - -function(target_linuxdeploy) - add_custom_target(linuxdeploy pwd - BYPRODUCTS appimage - COMMAND cp ../${PROJECT_NAME} . - COMMAND "${LINUXDEPLOYQT}" ${PROJECT_NAME} -appimage -unsupported-allow-new-glibc -verbose=3 -no-strip|| true - COMMAND cp ../spark-appimage.desktop default.desktop - COMMAND cp ../spark-appimage.png default.png - WORKING_DIRECTORY "${APPIMAGE_OUTPUT}") -endfunction(target_linuxdeploy) - -function(target_appimage) - add_custom_target(copy-desktop-appimage - COMMAND cp ../spark-appimage.desktop default.desktop - COMMAND cp ../spark-appimage.png default.png - WORKING_DIRECTORY "${APPIMAGE_OUTPUT}") - add_custom_target(appimage pwd - COMMAND ${APPIMAGETOOL} ${APPIMAGE_OUTPUT} - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" - DEPENDS copy-desktop-appimage) -endfunction(target_appimage) - -function(add_appimage) - # check linuxdeploy - if(NOT DEFINED LINUXDEPLOYQT) - message("AppImage> Not Found LINUXDEPLOYQT Variable!") - return() - endif(NOT DEFINED LINUXDEPLOYQT) - if(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) - message("> cmake version is less than 3.19") - message(WARNING "!Relative paths are not supported!") - else() - file(REAL_PATH ${LINUXDEPLOYQT} LINUXDEPLOYQT_REAL_PATH) - endif(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) - message("AppImage> Found LINUXDEPLOYQT Variable: ${LINUXDEPLOYQT_REAL_PATH}") - - # check appimagetool - if(NOT DEFINED APPIMAGETOOL) - message("AppImage> Not Found APPIMAGETOOL Variable!") - return() - endif(NOT DEFINED APPIMAGETOOL) - if(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) - # execute_process(COMMAND realpath ${APPIMAGETOOL} OUTPUT_VARIABLE APPIMAGETOOL_REAL_PATH) - message("> cmake version is less than 3.19") - message(WARNING "!Relative paths are not supported!") - else() - file(REAL_PATH ${APPIMAGETOOL} APPIMAGETOOL_REAL_PATH) - endif(CMAKE_VERSION VERSION_LESS 3.19 AND NOT EXISTS ${LINUXDEPLOYQT}) - message("AppImage> Found APPIMAGETOOL Variable: ${LINUXDEPLOYQT_REAL_PATH}") - - # do add_custome_target - make_directory(${APPIMAGE_OUTPUT}) - target_linuxdeploy() - target_appimage() -endfunction(add_appimage) - -function(add_appimage_desktop) - configure_file(cmake/spark-appimage.desktop.in - ${CMAKE_BINARY_DIR}/spark-appimage.desktop @ONLY) -endfunction(add_appimage_desktop) - -function(add_appimage_icon _ICON_PATH) - if(CMAKE_VERSION VERSION_LESS 3.21) - message("> cmake version is less than 3.21") - configure_file(${_ICON_PATH} ${CMAKE_BINARY_DIR}/spark-appimage.png COPYONLY) - else() - file(COPY_FILE ${_ICON_PATH} ${CMAKE_BINARY_DIR}/spark-appimage.png) - endif(CMAKE_VERSION VERSION_LESS 3.21) -endfunction(add_appimage_icon _ICON_PATH) - - - -# 如果glic>=2.27,你就需要加上参数 -unsupported-allow-new-glibc (意思就是不再低版本发行版使用了) -# 或 -unsupported-bundle-everything(大概的意思是尝试兼容,实际测试,到其他发行版直接用不了了,有可能是发行版的原因,还是建议用前者,虽然放弃了低版本) - -# -unsupported-bundle-everything - # 捆绑所有依赖库,包括 ld-linux.so 加载器和 glibc。这将允许构建在较新系统上的应用程序在较旧的目标系统上运行,但不建议这样做,因为它会导致捆绑包超出所需的大小(并且可能到其他发行版无法使用) -# -unsupported-allow-new-glibc - # 允许 linuxdeployqt 在比仍受支持的最旧 Ubuntu LTS 版本更新的发行版上运行。这将导致 AppImage无法在所有仍受支持的发行版上运行,既不推荐也不测试或支持 - -# ./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-allow-new-glibc -# ./linuxdeployqt-7-x86_64.AppImage 程序目录/程序 -appimage -unsupported-bundle-everything - - - - -# 1. 在顶层构建中导入 Appimage 的构建 -# include(cmake/SparkAppimageConfig.cmake) # 导入来自 Spark 构建的 Appimage 构建 -# add_appimage_icon(assets/spark.png) # 添加到 Appimage 中的默认的图标 -# add_appimage_desktop() # 添加到 Appimage 中的默认desktop(使用来自 Spark 构建的 Desktop 构建中配置的信息(必须要求 spark-desktop)) -# add_appimage() # 应用对 Appimage 的构建 - -# 2. 在 Makefile 进行构建目标构建 Appimage 的构建流 -- -# 在 Makefile 进行构建目标构建 Appimage (要求提供工具的绝对路径,然后可依次进行linuxdeployqt, genrate-appimage) -# 来自于 https://github.com/probonopd/linuxdeployqt 的 linuxdeployqt -# 来自于 https://github.com/AppImage/AppImageKit 的 appimagetool -# 来自于 https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git 托管存储的工具 - -# 或指定你所想存放克隆项目的位置 -# BUNDLE_LINUXDEPLOYQT := $(shell pwd)/build/bundle-linuxdeployqt - -# download-bundle-linuxdeploytools: -# -git clone https://gitlink.org.cn/zinface/bundle-linuxdeployqt.git $(BUNDLE_LINUXDEPLOYQT) - -# LINUXDEPLOYQT := "$(BUNDLE_LINUXDEPLOYQT)/linuxdeployqt-continuous-x86_64.AppImage" -# APPIMAGETOOL := "$(BUNDLE_LINUXDEPLOYQT)/appimagetool-x86_64.AppImage" - -# linuxdeploy: release download-bundle-linuxdeploytools -# cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) -# cd build && make linuxdeploy - -# genrate-appimage: -# cd build && cmake .. -DLINUXDEPLOYQT=$(LINUXDEPLOYQT) -DAPPIMAGETOOL=$(APPIMAGETOOL) -# cd build && make appimage diff --git a/cmake/SparkDesktopMacros.cmake b/cmake/SparkDesktopMacros.cmake deleted file mode 100644 index 223ac6b..0000000 --- a/cmake/SparkDesktopMacros.cmake +++ /dev/null @@ -1,35 +0,0 @@ - -macro(spark_desktop_macros _APP_NAME _APP_NAME_ZH_CN _APP_COMMENT _APP_TYPE _APP_EXECUTE_PATH _APP_EXECUTE_ICON_PATH _APP_CATEGORIES) - set(APP_NAME ${_APP_NAME}) - set(APP_NAME_ZH_CN ${_APP_NAME_ZH_CN}) - set(APP_COMMENT ${_APP_COMMENT}) - set(APP_TYPE ${_APP_TYPE}) - set(APP_EXECUTE_PATH ${_APP_EXECUTE_PATH}) - set(APP_EXECUTE_ICON_PATH ${_APP_EXECUTE_ICON_PATH}) - set(APP_CATEGORIES ${_APP_CATEGORIES}) - configure_file(cmake/spark-desktop.desktop.in - ${CMAKE_BINARY_DIR}/${_APP_NAME}.desktop - ) -endmacro(spark_desktop_macros _APP_NAME _APP_NAME_ZH_CN _APP_COMMENT _APP_TYPE _APP_EXECUTE_PATH _APP_EXECUTE_ICON_PATH _APP_CATEGORIES) - -# include(cmake/SparkDesktopMacros.cmake) -# 内容默认应用名称: Name= 应与项目名称相同 -# spark_desktop_macros( - # 应用名称: Name= - # 应用名称: Name[zh_CN]= - # 应用说明: Comment= - # 应用类型: Type= - # 执行程序: Exec= - # 图标路径: Icon= - # 应用分类: Category= -# ) - -# configure_file( -# [NO_SOURCE_PERMISSIONS | USE_SOURCE_PERMISSIONS | -# FILE_PERMISSIONS ...] -# [COPYONLY] [ESCAPE_QUOTES] [@ONLY] -# [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) - -# install(FILES ${APP_NAME}.desktop -# DESTINATION /usr/share/applications -# ) \ No newline at end of file diff --git a/cmake/SparkInstallMacrosConfig.cmake b/cmake/SparkInstallMacrosConfig.cmake deleted file mode 100644 index 1f8939b..0000000 --- a/cmake/SparkInstallMacrosConfig.cmake +++ /dev/null @@ -1,131 +0,0 @@ - -# spark_install_target -# 基于传入的路径/目标进行安装 -# 可接受的值为: 安装路径 目标A -# 可接受的值为: 安装路径 目标A 目标B 目标C... -macro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS) - install(TARGETS - ${INSTALL_TARGETS} ${ARGN} - DESTINATION ${INSTALL_TARGET_DIR}) -endmacro(spark_install_target INSTALL_TARGET_DIR INSTALL_TARGETS) - -# spark_install_file -# 基于传入的路径/文件进行安装 -# 可接受的值为: 安装路径 文件A -# 可接受的值为: 安装路径 文件A 文件B 文件C... -macro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE) - install(FILES - ${INSTALL_FILE} ${ARGN} - DESTINATION ${INSTALL_FILE_DIR}) -endmacro(spark_install_file INSTALL_FILE_DIR INSTALL_FILE) - -# spark_install_program -# 基于传入的路径/文件进行安装,并自动为其添加可执行权限 -# 可接受的值为: 安装路径 文件A -# 可接受的值为: 安装路径 文件A 文件B 文件C... -macro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM) - install(PROGRAMS - ${INSTALL_PROGRAM} ${ARGN} - DESTINATION ${INSTALL_PROGRAM_DIR}) -endmacro(spark_install_program INSTALL_PROGRAM_DIR INSTALL_PROGRAM) - - -# spark_install_directory -# 基于传入的路径/目录进行安装 -# 可接受的值为: 安装路径 路径A -# 可接受的值为: 安装路径 路径A/* 为安装路径A下所有内容 -macro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY) - # INSTALL_DIRECOTRY 可能包含 * ? - # 1. 找到 '*', 截取,列出目录下所有文件,安装 - # 2. 是文件的直接使用 spark_install_file 安装 - # 2. 是目录的直接使用 spark_install_directory 安装 - # message(FATAL_ERROR "${INSTALL_DIRECTORY_DIR}") - # string(FIND [REVERSE]) - string(FIND "${INSTALL_DIRECOTRY}" "*" INSTALL_DIRECTORY_FIND_INDEX) - # message(FATAL_ERROR "${INSTALL_DIRECTORY_FIND_INDEX}: ${INSTALL_DIRECTORY_DIR}") - - # file(GLOB - # [LIST_DIRECTORIES true|false] [RELATIVE ] [CONFIGURE_DEPENDS] - # [...]) - - if (NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1) - # string(SUBSTRING ) - string(SUBSTRING "${INSTALL_DIRECOTRY}" 0 ${INSTALL_DIRECTORY_FIND_INDEX} INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING) - # message(FATAL_ERROR "directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}") - - # file(GLOB - # [LIST_DIRECTORIES true|false] [RELATIVE ] [CONFIGURE_DEPENDS] - # [...]) - - file(GLOB INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING}/*) - list(LENGTH INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH) - foreach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST) - # message("-> ${item}") - if(IS_DIRECTORY ${item}) - message("-> ${item} IS_DIRECTORY") - # spark_install_directory(${INSTALL_DIRECTORY_DIR} ${item}) - install(DIRECTORY - ${item} - DESTINATION ${INSTALL_DIRECTORY_DIR} - USE_SOURCE_PERMISSIONS) - else() - message("-> ${item} NOT IS_DIRECTORY") - spark_install_program(${INSTALL_DIRECTORY_DIR} ${item}) - # spark_install_file(${INSTALL_DIRECTORY_DIR} ${item}) - endif(IS_DIRECTORY ${item}) - endforeach(item IN LISTS INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST) - - # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST}") - # message(FATAL_ERROR " directory: ${INSTALL_DIRECTORY_FIND_INDEX_SUBSTRING_FILE_GLOB_LIST_LENGTH}") - - else() - message(FATAL_ERROR "install: ${INSTALL_DIRECTORY_DIR}") - - install(DIRECTORY - ${INSTALL_DIRECOTRY} ${ARGN} - DESTINATION ${INSTALL_DIRECTORY_DIR}) - endif(NOT INSTALL_DIRECTORY_FIND_INDEX EQUAL -1) - -endmacro(spark_install_directory INSTALL_DIRECTORY_DIR INSTALL_DIRECOTRY) - - - -macro(spark_install_changelog CHANGE_LOG_FILE) - set(SOURCE_CHANGE_LOG_FILE ${CHANGE_LOG_FILE}) - if (EXISTS ${SOURCE_CHANGE_LOG_FILE}) - - execute_process(COMMAND test -f ${SOURCE_CHANGE_LOG_FILE} - RESULT_VARIABLE changelog_test - ) - execute_process(COMMAND which gzip - RESULT_VARIABLE gzip_test - ) - if (NOT changelog_test EQUAL 0) - message(FATAL_ERROR "NOTE: 不是常规文件: ${SOURCE_CHANGE_LOG_FILE}") - endif(NOT changelog_test EQUAL 0) - - if (NOT gzip_test EQUAL 0) - message(FATAL_ERROR "NOTE: 未安装 gzip, 无法压缩 changelog") - endif(NOT gzip_test EQUAL 0) - - # 压缩与安装日志文件 - add_custom_command( - OUTPUT "${CMAKE_BINARY_DIR}/changelog.gz" - COMMAND gzip -cn9 "${SOURCE_CHANGE_LOG_FILE}" > "${CMAKE_BINARY_DIR}/changelog.gz" - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - COMMENT "Compressing changelog" - ) - add_custom_target(changelog ALL DEPENDS "${CMAKE_BINARY_DIR}/changelog.gz") - - # include(GNUInstallDirs) - set(SPARK_INSTALL_CHANGE_LOG_DIR "/usr/share/doc/${PROJECT_NAME}/") - install(FILES - ${CMAKE_BINARY_DIR}/changelog.gz - debian/copyright - - DESTINATION ${SPARK_INSTALL_CHANGE_LOG_DIR} - ) - else() - message(FATAL_ERROR "未找到: ${SOURCE_CHANGE_LOG_FILE}") - endif(EXISTS ${SOURCE_CHANGE_LOG_FILE}) -endmacro(spark_install_changelog CHANGE_LOG_FILE) diff --git a/cmake/nisi_package_config.cmake b/cmake/nisi_package_config.cmake deleted file mode 100644 index 46f8316..0000000 --- a/cmake/nisi_package_config.cmake +++ /dev/null @@ -1,62 +0,0 @@ -set(CPACK_GENERATOR NSIS) -set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") -set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}") -set(CPACK_PACKAGE_CONTACT "XiaoPb") - -set(CPACK_PACKAGE_VERSION "1.0.0") -set(CPACK_PACKAGE_VERSION_MAJOR "1") -set(CPACK_PACKAGE_VERSION_MINOR "0") -set(CPACK_PACKAGE_VERSION_PATCH "0") -# set(CPACK_PACKAGE_VERSION_PATCH "0") - -set (CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") - -set(CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}_V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") -set(CPACK_NSIS_MODIFY_PATH "ON") -set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") -set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/notepad--.ico") -set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/notepad--.ico") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License") - -set (CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ) - -set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS " - WriteRegStr SHCTX 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${PROJECT_NAME}' '' '$INSTDIR\\\\${PROJECT_NAME}.exe' - WriteRegStr SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell' '' 'open' - WriteRegStr SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell\\\\open\\\\command' '' '$\\\'$INSTDIR\\\\${PROJECT_NAME}.exe$\\\' $\\\'%1$\\\'' - WriteRegStr SHCTX 'Software\\\\Classes\\\\.txt\\\\OpenWithProgids' '${PROJECT_NAME}' '' - WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' '' 'Edit with ${PROJECT_NAME}' - WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' 'Icon' '$INSTDIR\\\\${PROJECT_NAME}.exe' - WriteRegStr SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\\command' '' '$\\\'$INSTDIR\\\\${PROJECT_NAME}.exe$\\\' $\\\'%1$\\\'' - ") - -set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " - Delete '$DESKTOP\\\\${PROJECT_NAME}.lnk' - Delete '$SMPROGRAMS\\\\${PROJECT_NAME}.lnk' - DeleteRegKey SHCTX 'Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}' - DeleteRegKey SHCTX 'Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${PROJECT_NAME}.exe' '' '$INSTDIR\\\\${PROJECT_NAME}.exe' - DeleteRegKey SHCTX 'Software\\\\${PROJECT_NAME}\' - DeleteRegValue SHCTX 'Software\\\\Classes\\\\.txt\\\\OpenWithProgids' '${PROJECT_NAME}' - DeleteRegKey SHCTX 'Software\\\\Classes\\\\${PROJECT_NAME}' - ") - -# 创建任意快捷方式 -#CreateShortCut "$DESKTOP\${PROJECT_NAME}.lnk" "$INSTDIR\release\${PROJECT_NAME}.exe" -# ;创建开始菜单快捷方式 -# ExecShell "startpin" "$DESKTOP\${PROJECT_NAME}.lnk" -# ;创建任务栏快捷方式 -# ExecShell "taskbarpin" "$DESKTOP\${PROJECT_NAME}.lnk" -# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "CreateShortCut \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\" \\\\\"$INSTDIR\\\\release\\\\${PROJECT_NAME}.exe\\\\\"") -# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecShell \\\\\"startpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") -# list(APPEND CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecShell \\\\\"taskbarpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") - -# ;删除开始菜单快捷方式 -# ExecShell "startunpin" "$DESKTOP\${PROJECT_NAME}.lnk" -# ;删除任务栏快捷方式 -# ExecShell "taskbarunpin" "$DESKTOP\${PROJECT_NAME}.lnk" -# 删除桌面的快捷方式 -# Delete "$DESKTOP\${PRODUCT_NAME}.lnk" -# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecShell \\\\\"startunpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") -# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "ExecShell \\\\\"taskbarunpin\\\\\" \\\\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\\\"") -# list(APPEND CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "Delete \\\\\"$DESKTOP\\\\${PRODUCT_NAME}.lnk\\\\\"") diff --git a/cmake/notepad--.ico b/cmake/notepad--.ico deleted file mode 100644 index fce8b8facfc7ea6e83dbca7a208092adb6fb6b2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 zcmeI3zfJ-{5XKiMDB&c*n3!N;LE|$(sEMV|V5RW|#NJYm#MXpZ*xFfWWp8~DqlqSj z#zqUHt~=Z&1mxcxx9bjmOO{E7yXAi0?C#7#PKcCxRjWe1Z-{bDh@udpth#cEBh|^@ zZ`IJ?9ST4JC@@Qbm$S8WyXn<~=E`21S*L3b)U^}CEY3-v2fo)*<4E4!Yfa*t<`4Wr zkvI1sZk=Xwbh{&~8r$+ySrL_3YiW&X##PE+UEp8uve;*JY`yX!x0oJ^gE`2Xwpe+4Jrx=Z)J zrsny$aoc`=H!3?FPitn}c$|E3*_VNT5q9qUi?Va(PlBB*e^Trm`IBVl#-B7hCw>#` zT=-3~bKp10?mE9|c9;2WuoJ(F&%fAWCw^+``Kb$6?ssgn6aW43YFcTqtu*-4=ih?U ze4VZb4GKU3D3GKA^ZqaU9e!y8wl73f9b~9mO52RKS#5LLmb9&C+t5~qHl=Mw+pM-Z MZA;o#=8dY9KQ75*EdT%j diff --git a/cmake/nsis_package_config.cmake b/cmake/nsis_package_config.cmake new file mode 100644 index 0000000..0098d39 --- /dev/null +++ b/cmake/nsis_package_config.cmake @@ -0,0 +1,59 @@ +set(CPACK_GENERATOR NSIS) + +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_NAME}") +# 维护人员 +set(CPACK_PACKAGE_CONTACT "XiaoPb") + +set(P4_VERSION_INFO_CL_HIGH "0") +set(P4_VERSION_INFO_CL_LOW "0") +# set(CPACK_PACKAGE_VERSION_PATCH "0") + +set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") + +set(CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME}V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") +set(CPACK_NSIS_PACKAGE_NAME "${CPACK_PACKAGE_NAME}V${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + +set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL "ON") + +set(CPACK_NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ico/txt (9).ico") +set(CPACK_NSIS_MUI_UNIICON "${CMAKE_CURRENT_SOURCE_DIR}/src/Resources/ico/txt (9).ico") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/License") + +set (CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ) + +# 设置 安装包属性信息 +set (CPACK_NSIS_DEFINES " + ${CPACK_NSIS_DEFINES} + VIProductVersion ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${P4_VERSION_INFO_CL_HIGH}.${P4_VERSION_INFO_CL_LOW} + VIFileVersion ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${P4_VERSION_INFO_CL_HIGH}.${P4_VERSION_INFO_CL_LOW} + VIAddVersionKey /LANG=0 \\\"ProductName\\\" \\\"${CPACK_PACKAGE_NAME}\\\" + VIAddVersionKey /LANG=0 \\\"ProductVersion\\\" \\\"v${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}${CPACK_PACKAGE_BUILD_TYPE_REVISION}\\\" + VIAddVersionKey /LANG=0 \\\"Comments\\\" \\\"${CPACK_PACKAGE_DESCRIPTION}\\\" + VIAddVersionKey /LANG=0 \\\"CompanyName\\\" \\\"${CPACK_PACKAGE_VENDOR}\\\" + VIAddVersionKey /LANG=0 \\\"LegalCopyright\\\" \\\"${CPACK_PACKAGE_COPYRIGHT}\\\" + VIAddVersionKey /LANG=0 \\\"FileDescription\\\" \\\"${CPACK_PACKAGE_NAME} Installer\\\" + VIAddVersionKey /LANG=0 \\\"FileVersion\\\" \\\"v${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}${CPACK_PACKAGE_BUILD_TYPE_REVISION}\\\" + " +) + +# 设置 安装时需要的环境变量 +set (CPACK_NSIS_EXTRA_INSTALL_COMMANDS " + WriteRegStr SHCTX \\\"Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${PROJECT_NAME}\\\" \\\"\\\" \\\"$INSTDIR\\\\bin\\\\${PROJECT_NAME}.exe\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell\\\" \\\"\\\" \\\"open\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\${PROJECT_NAME}\\\\shell\\\\open\\\\command\\\" \\\"\\\" \\\"$\\\\\\\"$INSTDIR\\\\bin\\\\${PROJECT_NAME}.exe$\\\\\\\" $\\\\\\\"%1$\\\\\\\"\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\.txt\\\\OpenWithProgids\\\" \\\"${PROJECT_NAME}\\\" \\\"\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\" \\\"\\\" \\\"Edit with ${PROJECT_NAME}\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\" \\\"Icon\\\" \\\"$INSTDIR\\\\bin\\\\${PROJECT_NAME}.exe\\\" + WriteRegStr SHCTX \\\"Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\\command\\\" \\\"\\\" \\\"$\\\\\\\"$INSTDIR\\\\bin\\\\${PROJECT_NAME}.exe$\\\\\\\" $\\\\\\\"%1$\\\\\\\"\\\" + ") + +# 设置 卸载时需要的环境变量 +set (CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS " + Delete \\\"$DESKTOP\\\\${PROJECT_NAME}.lnk\\\" + Delete \\\"$SMPROGRAMS\\\\${PROJECT_NAME}.lnk\\\" + DeleteRegKey SHCTX \\\"Software\\\\Classes\\\\*\\\\shell\\\\${PROJECT_NAME}\\\" + DeleteRegKey SHCTX \\\"Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\bin\\\\${PROJECT_NAME}.exe\\\" \\\"\\\" \\\"$INSTDIR\\\\bin\\\\${PROJECT_NAME}.exe\\\" + DeleteRegKey SHCTX \\\"Software\\\\${PROJECT_NAME}\\\" + DeleteRegValue SHCTX \\\"Software\\\\Classes\\\\.txt\\\\OpenWithProgids\\\" \\\"${PROJECT_NAME}\\\" + DeleteRegKey SHCTX \\\"Software\\\\Classes\\\\${PROJECT_NAME}\\\" + ") diff --git a/cmake/package-deb.descript b/cmake/package-deb.descript deleted file mode 100644 index be0fa83..0000000 --- a/cmake/package-deb.descript +++ /dev/null @@ -1,45 +0,0 @@ -# 注释行(使用方式) -# find_package(DebPackage PATHS ${CMAKE_SOURCE_DIR}) -# add_package_descript(cmake/package-deb.descript) - -# 打包后的文件名称 -# FileName: 待定 -# 配置 PACKAGE_SUFFIX 变量可添加尾巴名称 -# 如在 Makefile 中硬编码方式 -# OSID=$(shell lsb_release -si) -# OSRELEASE=$(shell lsb_release -sr) -# -DPACKAGE_SUFFIX="_$(OSID)$(OSRELEASE)" - -# deb 安装包的安装时脚本 -# 1.安装[前|后]执行脚本(preinst,postinst), -# 2.卸载[前|后]执行脚本(prerm,postrm) -# ControlExtra: 未定义(暂不支持) -# 如需指定请修改 DebPackageConfig.cmake 模板(第252行) -# CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA 变量 - -# 打包类型,暂支持 deb, 未来支持 tgz(tar.gz) -Type: deb -# 软件包名称(自动, 使用 PROJECT_NAME 变量值) -Package: com.hmja.notepad -# 软件包版本(自动, 使用 PROJECT_VERSION 变量值) -Version: auto -# 日历化尾部版本 -CalVer: true -# 软件包架构(自动) -Architecture: auto -# 软件包属于的系统部分[admin|cli-mono|comm|database|debug|devel|doc|editors|education|electronics|embedded|fonts|games|gnome|gnu-r|gnustep|graphics|hamradio|haskell|httpd|interpreters|introspection|java|javascript|kde|kernel|libdevel|libs|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|rust|science|shells|sound|tasks|tex|text|utils|vcs|video|web|x11|xfce|zope] -Section: editors -# 软件包优先级[required|important|stantard|optional|extra] -Priority: optional -# 软件包依赖 -Depends: -# 软件包维护者(组织或个人) -Maintainer: 尹作为 <757210198@qq.com> -# 软件包主页 -Homepage: https://gitee.com/cxasm/notepad-- -# 软件包建议 -Recommends: -# 软件包描述信息 -Descrition: Notepad--是一个国产跨平台、简单的文本编辑器。 - Notepad--是一个国产跨平台、简单的文本编辑器,是替换notepad++的一种选择。 - 其内置强大的代码对比功能,让你丢掉付费的beyond compare。 diff --git a/cmake/spark-appimage.desktop.in b/cmake/spark-appimage.desktop.in deleted file mode 100644 index 70fc6b9..0000000 --- a/cmake/spark-appimage.desktop.in +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Name=@APP_NAME@ -Name[zh_CN]=@APP_NAME_ZH_CN@ -Exec=AppRun %F -Icon=default -Comment=@APP_COMMENT@ -Terminal=true -Type=Application -Categories=@APP_CATEGORIES@ -MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-patch;text/x-adasrc;text/x-chdr;text/x-csrc;text/css;application/x-desktop;text/x-patch;text/x-fortran;text/html;text/x-java;text/x-tex;text/x-makefile;text/x-objcsrc;text/x-pascal;application/x-perl;application/x-perl;application/x-php;text/vnd.wap.wml;text/x-python;application/x-ruby;text/sgml;application/xml;model/vrml;image/svg+xml;application/json; diff --git a/cmake/spark-desktop.desktop.in b/cmake/spark-desktop.desktop.in deleted file mode 100644 index e33c74e..0000000 --- a/cmake/spark-desktop.desktop.in +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=@APP_NAME@ -Name[zh_CN]=@APP_NAME_ZH_CN@ -Comment=@APP_COMMENT@ -Type=@APP_TYPE@ -Exec=@APP_EXECUTE_PATH@ -Icon=@APP_EXECUTE_ICON_PATH@ -Categories=@APP_CATEGORIES@ -MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-patch;text/x-adasrc;text/x-chdr;text/x-csrc;text/css;application/x-desktop;text/x-patch;text/x-fortran;text/html;text/x-java;text/x-tex;text/x-makefile;text/x-objcsrc;text/x-pascal;application/x-perl;application/x-perl;application/x-php;text/vnd.wap.wml;text/x-python;application/x-ruby;text/sgml;application/xml;model/vrml;image/svg+xml;application/json; - -# Generated from the DesktopGenerater component of the z-Tools toolkit \ No newline at end of file diff --git a/getos.py b/getos.py deleted file mode 100644 index 912517c..0000000 --- a/getos.py +++ /dev/null @@ -1,2 +0,0 @@ -import sys -print(sys.platform) diff --git a/win.bat b/win.bat index 40e99bc..cb82043 100644 --- a/win.bat +++ b/win.bat @@ -4,9 +4,11 @@ if exist %1 ( ) else ( mkdir %1 ) -copy .\notepad--.exe .\%1 -cd %1 -windeployqt notepad--.exe +@REM copy .\notepad--.exe .\%1 +@REM cd %1 +windeployqt notepad--.exe --dir=%1 +copy .\src\qscint\libqscint.a .\%1 +copy .\src\plugin\helloworld\libhelloworld.dll .\%1 @REM if exist plugin ( @REM @echo "plugin ļѴ" diff --git a/win.mk b/win.mk index b8c2fb9..f979f52 100644 --- a/win.mk +++ b/win.mk @@ -1,25 +1,27 @@ -CPUS=4 -SUFFIX=Nuknown +QT_CXX_COMPILER:=D:/Qt/Tools/mingw810_64/bin/g++.exe +QT_C_COMPILER:=D:/Qt/Tools/mingw810_64/bin/gcc.exe +Qt_PREFIX_PATH:=D:/Qt/5.15.2/mingw81_64 -PROJECT_NAME=notepad-- -PACKAGE_NAME=com.hmja.notepad +all:all_noplugin all_plugin -all: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . - cd build && make +all_noplugin:release package + +all_plugin:release_plugin package debug: - mkdir -p build - cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. - cd build && make + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Debug -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . + cd build && make -j4 release: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . - cd build && make - win.bat release - -release-plugin: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPACKAGE_SUFFIX="$(SUFFIX)" -DPLUGIN_EN=on -DCMAKE_CXX_COMPILER=D:/Qt/Tools/mingw810_64/bin/g++.exe -DCMAKE_C_COMPILER=D:/Qt/Tools/mingw810_64/bin/gcc.exe -DIS_WIN=WIN32 -DCMAKE_PREFIX_PATH=D:\Qt\5.15.2\mingw81_64 . - cd build && make - ./win.bat release-plugin + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . + cd build && make -j4 + +release_plugin: + cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=on -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . + cd build && make -j4 + +package: + win.bat bin + cd build && make package + -- Gitee From 957d1fb89ae0587917e5988c8eff928af2e9e19d Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 21:43:35 +0800 Subject: [PATCH 17/24] update define "NDD_EXPORT" of Linux --- src/include/pluginGl.h | 20 +++++++++++--------- src/plugin/helloworld/helloworldexport.cpp | 10 ++++++---- src/plugin/test/test.cpp | 10 ++++++---- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/include/pluginGl.h b/src/include/pluginGl.h index 069f6c2..2e2635f 100755 --- a/src/include/pluginGl.h +++ b/src/include/pluginGl.h @@ -4,20 +4,22 @@ #define NDD_EXPORTDLL #if defined(Q_OS_WIN) -#if defined(NDD_EXPORTDLL) -#define NDD_EXPORT __declspec(dllexport) + #if defined(NDD_EXPORTDLL) + #define NDD_EXPORT __declspec(dllexport) + #else + #define NDD_EXPORT __declspec(dllimport) + #endif #else -#define NDD_EXPORT __declspec(dllimport) -#endif + #define NDD_EXPORT __attribute__((visibility("default"))) #endif struct ndd_proc_data { - QString m_strPlugName; // ѡ - QString m_strFilePath; //lib ȫ·ѡ - QString m_strComment; //˵ - QString m_version; //汾롣ѡ - QString m_auther;//ơѡ + QString m_strPlugName; //������� ��ѡ + QString m_strFilePath; //lib �����ȫ��·������ѡ + QString m_strComment; //���˵�� + QString m_version; //�汾���롣��ѡ + QString m_auther;//�������ơ���ѡ }; diff --git a/src/plugin/helloworld/helloworldexport.cpp b/src/plugin/helloworld/helloworldexport.cpp index 84c3f49..aba2a40 100755 --- a/src/plugin/helloworld/helloworldexport.cpp +++ b/src/plugin/helloworld/helloworldexport.cpp @@ -8,11 +8,13 @@ #define NDD_EXPORTDLL #if defined(Q_OS_WIN) -#if defined(NDD_EXPORTDLL) -#define NDD_EXPORT __declspec(dllexport) + #if defined(NDD_EXPORTDLL) + #define NDD_EXPORT __declspec(dllexport) + #else + #define NDD_EXPORT __declspec(dllimport) + #endif #else -#define NDD_EXPORT __declspec(dllimport) -#endif + #define NDD_EXPORT __attribute__((visibility("default"))) #endif #ifdef __cplusplus diff --git a/src/plugin/test/test.cpp b/src/plugin/test/test.cpp index bd11bb4..c2ccca1 100755 --- a/src/plugin/test/test.cpp +++ b/src/plugin/test/test.cpp @@ -7,11 +7,13 @@ #define NDD_EXPORTDLL #if defined(Q_OS_WIN) -#if defined(NDD_EXPORTDLL) -#define NDD_EXPORT __declspec(dllexport) + #if defined(NDD_EXPORTDLL) + #define NDD_EXPORT __declspec(dllexport) + #else + #define NDD_EXPORT __declspec(dllimport) + #endif #else -#define NDD_EXPORT __declspec(dllimport) -#endif + #define NDD_EXPORT __attribute__((visibility("default"))) #endif #ifdef __cplusplus -- Gitee From 505d8145eac0baaaab4d06c6e62336647b8fc65f Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 21:52:05 +0800 Subject: [PATCH 18/24] update linux.mk --- linux.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/linux.mk b/linux.mk index 7850449..43f4a79 100644 --- a/linux.mk +++ b/linux.mk @@ -31,7 +31,7 @@ release: package: release cd build && make package tree build/_CPack_Packages/Linux/DEB/$(PROJECT_NAME)-* - dpkg-deb --contents build/$(PACKAGE_NAME)_*$(CALENDAR)*$(SUFFIX).deb +# dpkg-deb --contents build/$(PROJECT_NAME)$(SUFFIX).deb builddeps: cd build && make builddeps @@ -39,6 +39,4 @@ builddeps: cpus: @echo "CPU数量: $(CPUS)" -copytosource:package - cp build/$(PACKAGE_NAME)_*$(CALENDAR)*.deb . -- Gitee From d997cefb460480aca0752f7f19776f57c25c3a40 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 22:13:29 +0800 Subject: [PATCH 19/24] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=89=93=E5=8C=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- win.bat | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/win.bat b/win.bat index cb82043..7985876 100644 --- a/win.bat +++ b/win.bat @@ -4,28 +4,15 @@ if exist %1 ( ) else ( mkdir %1 ) +cd %1 +if exist plugin ( + @echo "plugin ļѴ" +) else ( + mkdir plugin +) +cd .. @REM copy .\notepad--.exe .\%1 @REM cd %1 windeployqt notepad--.exe --dir=%1 -copy .\src\qscint\libqscint.a .\%1 -copy .\src\plugin\helloworld\libhelloworld.dll .\%1 - -@REM if exist plugin ( -@REM @echo "plugin ļѴ" -@REM cd .. -@REM ) else ( -@REM mkdir plugin -@REM cd .. -@REM ) - -@REM @echo off ==> @echo ǴӡϢûʵ -@REM set target_path=build\src\plugin\helloworld\helloworld_autogen ==> ָļڵ̻Ŀ¼ -@REM set copy_target_path=C:\Users\dulun\Desktop\copy ==> ָļ洢Ŀ¼ȽĿ¼ -@REM set vcffile=*.vcf ==> ָļͣ.vcfΪ׺ -@REM C: ==> ָļڵ̣C̣һҪָ -@REM cd %target_path% ==> ָļĿ¼СһƥķΧʱ -@REM for /f "delims=" %%s in ('dir /b/a-d/s "%target_path%"\"%vcffile%"') do ( -@REM echo %%s -@REM copy /y "%%s" %copy_target_path% -@REM ) ==> ָĿ¼ƥָļļ֣ļ -@REM pause ==> ִкʾ밴... \ No newline at end of file +copy .\src\qscint\libqscint.a .\%1\plugin +copy .\src\plugin\*\*.dll .\%1\plugin -- Gitee From dae0fbcdc57d0efd4dd8cd57ad402757019bc6c8 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 23:05:29 +0800 Subject: [PATCH 20/24] =?UTF-8?q?=E6=94=AF=E6=8C=81Win=E4=B8=8B=E8=BF=9E?= =?UTF-8?q?=E5=90=8C=E6=8F=92=E4=BB=B6=E4=B8=80=E8=B5=B7=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 3 +++ src/plugin/helloworld/CMakeLists.txt | 8 ++++++++ src/qscint/CMakeLists.txt | 8 ++++++++ win.bat | 6 ++---- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fc0516..4678606 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,9 @@ ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) +# set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin") +set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) + if(CMAKE_HOST_UNIX) install( TARGETS ${PROJECT_NAME} diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt index 336f250..defd5a2 100644 --- a/src/plugin/helloworld/CMakeLists.txt +++ b/src/plugin/helloworld/CMakeLists.txt @@ -32,3 +32,11 @@ ${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex ) target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) + +if(${notepad--_BINARY_DIR}) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) +set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +endif() \ No newline at end of file diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index 4a0f998..4eefb74 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -36,3 +36,11 @@ ${PROJECT_SOURCE_DIR}/scintilla/src ${PROJECT_SOURCE_DIR}/scintilla/include) target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport) + +if(${notepad--_BINARY_DIR}) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) +set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +endif() \ No newline at end of file diff --git a/win.bat b/win.bat index 7985876..d09e295 100644 --- a/win.bat +++ b/win.bat @@ -11,8 +11,6 @@ if exist plugin ( mkdir plugin ) cd .. -@REM copy .\notepad--.exe .\%1 -@REM cd %1 windeployqt notepad--.exe --dir=%1 -copy .\src\qscint\libqscint.a .\%1\plugin -copy .\src\plugin\*\*.dll .\%1\plugin +@REM copy .\src\qscint\libqscint.a .\%1\plugin +@REM copy .\src\plugin\^*\^*.dll .\%1\plugin -- Gitee From a97f4672aa2aae1778398f3566bb73175f693eb5 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Mon, 6 Feb 2023 23:15:08 +0800 Subject: [PATCH 21/24] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=93=E5=8C=85?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugin/helloworld/CMakeLists.txt | 2 +- src/qscint/CMakeLists.txt | 2 +- win.bat | 17 +++-------------- 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt index defd5a2..7e3d74c 100644 --- a/src/plugin/helloworld/CMakeLists.txt +++ b/src/plugin/helloworld/CMakeLists.txt @@ -33,7 +33,7 @@ ${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) -if(${notepad--_BINARY_DIR}) +if(NOT DEFINED ${notepad--_BINARY_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index 4eefb74..799e3f5 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -37,7 +37,7 @@ ${PROJECT_SOURCE_DIR}/scintilla/include) target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport) -if(${notepad--_BINARY_DIR}) +if(NOT DEFINED ${notepad--_BINARY_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) diff --git a/win.bat b/win.bat index d09e295..f2d9d63 100644 --- a/win.bat +++ b/win.bat @@ -1,16 +1,5 @@ -cd build -if exist %1 ( - @echo "%1 ļѴ" -) else ( - mkdir %1 -) -cd %1 -if exist plugin ( - @echo "plugin ļѴ" -) else ( - mkdir plugin -) -cd .. -windeployqt notepad--.exe --dir=%1 +cd build/bin + +windeployqt notepad--.exe @REM copy .\src\qscint\libqscint.a .\%1\plugin @REM copy .\src\plugin\^*\^*.dll .\%1\plugin -- Gitee From 5a53d2e5857f8e2e65c2598ed0b6adab85c4d182 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Tue, 7 Feb 2023 15:38:38 +0800 Subject: [PATCH 22/24] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9win.mk=E4=B8=ADQt?= =?UTF-8?q?=5FMSVC/MINGW=5FPREFIX=5FPATH=E5=8F=98=E9=87=8F=E5=90=8E?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E7=9B=B4=E6=8E=A5=E8=BF=9B=E8=A1=8C=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=89=93=E5=8C=85=20=20=20=EF=BC=88=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=B8=A6=E6=8F=92=E4=BB=B6=E7=89=88=E6=9C=AC?= =?UTF-8?q?=EF=BC=89=202.=20=E4=BF=AE=E6=94=B9rc=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=9A=84ico=E6=9F=A5=E6=89=BE=E8=B7=AF=E5=BE=84=E4=B8=BA?= =?UTF-8?q?=E7=9B=B8=E5=AF=B9=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 10 ++--- Makefile | 25 +++-------- src/RealCompareToMinGw.rc | 2 +- src/plugin/helloworld/CMakeLists.txt | 14 +++--- src/qscint/CMakeLists.txt | 22 +++++++--- win.mk | 65 +++++++++++++++++----------- 6 files changed, 74 insertions(+), 64 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4678606..ec442ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(notepad-- VERSION 1.22.0) +project(NotePad-- VERSION 1.22.0) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) @@ -57,7 +57,7 @@ ${PROJECT_SOURCE_DIR}/src/qscint/scintilla/boostregex target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) # set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin") -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) +# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) if(CMAKE_HOST_UNIX) install( @@ -72,12 +72,12 @@ if(CMAKE_HOST_UNIX) include(CPack) elseif(CMAKE_HOST_WIN32) install(TARGETS ${PROJECT_NAME} - DESTINATION "bin") + DESTINATION "/") - install(DIRECTORY ${PROJECT_SOURCE_DIR}/build/bin + install(DIRECTORY ${PROJECT_SOURCE_DIR}/build/bin/ DESTINATION "/") # 设置软件版本 - set(CPACK_PACKAGE_NAME "NotePad") + set(CPACK_PACKAGE_NAME "NotePad--") set(CPACK_PACKAGE_DESCRIPTION "NotePad--") set(CPACK_PACKAGE_COPYRIGHT "Copyright (c) 2023") set(CPACK_PACKAGE_VERSION "1.22.0") diff --git a/Makefile b/Makefile index 8f3a3e2..2db5182 100644 --- a/Makefile +++ b/Makefile @@ -1,30 +1,17 @@ UNAME:=WIN32 UNAME:=$(shell uname) +# Win下使用Git Bash运行make ifeq ($(UNAME), Linux) all:linux linux: make -f linux.mk package else -all:win_all_plugin - -win_all: +all: make -f win.mk all - -win_all_plugin: - make -f win.mk all_plugin - -win_all_noplugin: - make -f win.mk all_plugin - -win: - make -f win.mk release - -win_plugin: - make -f win.mk release_plugin - -win_package: - make -f win.mk package - +msvc: + make -f win.mk msvc +mingw: + make -f win.mk mingw endif diff --git a/src/RealCompareToMinGw.rc b/src/RealCompareToMinGw.rc index 5c9828f..26799a9 100644 --- a/src/RealCompareToMinGw.rc +++ b/src/RealCompareToMinGw.rc @@ -1,6 +1,6 @@ #include -IDI_ICON1 ICON DISCARDABLE "D:\\Qt\\CodeWorkspace\\notepad--\\src\\Resources\\edit\\global\\ndd.ico" +IDI_ICON1 ICON DISCARDABLE ".\\Resources\\edit\\global\\ndd.ico" LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED diff --git a/src/plugin/helloworld/CMakeLists.txt b/src/plugin/helloworld/CMakeLists.txt index 7e3d74c..f4acbcd 100644 --- a/src/plugin/helloworld/CMakeLists.txt +++ b/src/plugin/helloworld/CMakeLists.txt @@ -33,10 +33,10 @@ ${PROJECT_SOURCE_DIR}/../../qscint/scintilla/boostregex target_link_libraries(${PROJECT_NAME} qscint Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport Qt5::XmlPatterns) -if(NOT DEFINED ${notepad--_BINARY_DIR}) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) -set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -endif() \ No newline at end of file +# if(NOT DEFINED ${notepad--_BINARY_DIR}) +# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) +# set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# endif() diff --git a/src/qscint/CMakeLists.txt b/src/qscint/CMakeLists.txt index 799e3f5..b213b21 100644 --- a/src/qscint/CMakeLists.txt +++ b/src/qscint/CMakeLists.txt @@ -37,10 +37,18 @@ ${PROJECT_SOURCE_DIR}/scintilla/include) target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Concurrent Qt5::Network Qt5::PrintSupport) -if(NOT DEFINED ${notepad--_BINARY_DIR}) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) -set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) -endif() \ No newline at end of file +if(${CMAKE_BUILD_TYPE} STREQUAL "Release") + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5") +else() + set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "qmyedit_qt5d") +endif() + + + +# if(NOT DEFINED ${notepad--_BINARY_DIR}) +# set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# set(LIBRARY_OUTPUT_PATH ${notepad--_BINARY_DIR}/bin/plugin) +# set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${notepad--_BINARY_DIR}/bin/plugin) +# endif() diff --git a/win.mk b/win.mk index f979f52..7ac2002 100644 --- a/win.mk +++ b/win.mk @@ -1,27 +1,42 @@ -QT_CXX_COMPILER:=D:/Qt/Tools/mingw810_64/bin/g++.exe -QT_C_COMPILER:=D:/Qt/Tools/mingw810_64/bin/gcc.exe -Qt_PREFIX_PATH:=D:/Qt/5.15.2/mingw81_64 - -all:all_noplugin all_plugin - -all_noplugin:release package - -all_plugin:release_plugin package - -debug: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Debug -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . - cd build && make -j4 - -release: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=off -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . - cd build && make -j4 - -release_plugin: - cmake -G"CodeBlocks - MinGW Makefiles" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=on -DCMAKE_CXX_COMPILER=${QT_CXX_COMPILER} -DCMAKE_C_COMPILER=${QT_C_COMPILER} -DCMAKE_PREFIX_PATH=${Qt_PREFIX_PATH} . - cd build && make -j4 - -package: - win.bat bin - cd build && make package +# 基于 Git Bash 环境编写 +# 设置编译链信息是为了避免环境存在多个Qt环境时编译异常 + +# 填入Qt的Mingw相关工具安装路径 (不使用MINGW时可不填) +# 填入Mingw Qt G++程序完整路径 +Qt_MINGW_CXX_COMPILER:=d:/SOFT/Qt/Qt5.14.2/Tools/mingw730_64/bin/g++.exe +# 填入Mingw Qt GCC程序完整路径 +Qt_MINGW_C_COMPILER:=d:/SOFT/Qt/Qt5.14.2/Tools/mingw730_64/bin/gcc.exe +# 填入Mingw Qt库查找路径 +Qt_MINGW_PREFIX_PATH:=d:/SOFT/Qt/Qt5.14.2/5.14.2/mingw73_64 +# 指定生成的Makefiles格式 +Qt_MINGW_G:=CodeBlocks - MinGW Makefiles + +# 填入Qt的msvc相关工具安装路径 (不使用MSVC时可不填) +# 填入Msvc Qt库查找路径 +Qt_MSVC_PREFIX_PATH:=d:/CompilationTools/Qt/5.15.2/msvc2019_64 + + +all:msvc + + +mingw: + cmake -G"${Qt_MINGW_G}" -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=on -DCMAKE_PREFIX_PATH=${Qt_MINGW_PREFIX_PATH} -DCMAKE_CXX_COMPILER=${Qt_MINGW_CXX_COMPILER} -DCMAKE_C_COMPILER=${Qt_MINGW_C_COMPILER} . + cmake --build ./build --config=Release -- -j$$(nproc) + mkdir -p build/bin/plugin + cp -f build/NotePad--.exe build/bin/ + cd build/bin && windeployqt --qmldir=${Qt_MINGW_PREFIX_PATH}/qml NotePad--.exe + cp -r -f build/src/*/*/*.dll build/bin/plugin + cp -r -f build/src/*/*.a build/bin/plugin + cd build && cpack --config CPackConfig.cmake + +msvc: + cmake -Bbuild -DCMAKE_BUILD_TYPE=Release -DPLUGIN_EN=on -DCMAKE_PREFIX_PATH=${Qt_MSVC_PREFIX_PATH} . + cmake --build ./build --config=Release -j$$(nproc) + mkdir -p build/bin/plugin + cp -f build/Release/NotePad--.exe build/bin/ + cd build/bin && windeployqt --qmldir=${Qt_MSVC_PREFIX_PATH}/qml NotePad--.exe + cp -r -f build/src/*/*/Release/*.dll build/bin/plugin + cp -r -f build/src/*/Release/*.lib build/bin/plugin + cd build && cpack --config CPackConfig.cmake -- Gitee From 42d4da94dd6604dafc2f07efcceffe0c59392928 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Tue, 7 Feb 2023 16:00:32 +0800 Subject: [PATCH 23/24] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/columnedit.cpp | 8 ++++---- src/include/pluginGl.h | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/columnedit.cpp b/src/columnedit.cpp index 2bfe682..92cab56 100755 --- a/src/columnedit.cpp +++ b/src/columnedit.cpp @@ -54,7 +54,7 @@ void ColumnEdit::slot_bigChar(bool isCheck) ui.capital->setEnabled(isCheck); } -//�Զ�������ǰ���ڵ�״̬ +//自动调整当前窗口的状态 QWidget* ColumnEdit::autoAdjustCurrentEditWin() { QWidget* pw = m_editTabWidget->currentWidget(); @@ -93,7 +93,7 @@ void ColumnEdit::slot_ok() QString prefix = ui.prefix->text(); bool isCapital = ui.capital->isChecked(); - //�Dz����ı�ģʽ + //是插入文本模式 if (ui.textGroupBox->isChecked()) { @@ -138,7 +138,7 @@ void ColumnEdit::slot_ok() } else { - //����Ҫ�Ӹ���ʾ + //这里要加个提示 QApplication::beep(); return; } @@ -209,7 +209,7 @@ void ColumnEdit::slot_ok() lineText.chrg.cpMin = static_cast(lineBegin); lineText.chrg.cpMax = static_cast(lineEnd); lineText.lpstrText = lineData.data(); - //��ȡԭʼ�е����� + //获取原始行的内容 pEdit->SendScintilla(SCI_GETTEXTRANGE, 0, &lineText); if (lineEndCol < cursorCol) diff --git a/src/include/pluginGl.h b/src/include/pluginGl.h index 2e2635f..5c0535e 100755 --- a/src/include/pluginGl.h +++ b/src/include/pluginGl.h @@ -15,11 +15,11 @@ struct ndd_proc_data { - QString m_strPlugName; //������� ��ѡ - QString m_strFilePath; //lib �����ȫ��·������ѡ - QString m_strComment; //���˵�� - QString m_version; //�汾���롣��ѡ - QString m_auther;//�������ơ���ѡ + QString m_strPlugName; //插件名称 必选 + QString m_strFilePath; //lib 插件的全局路径。必选 + QString m_strComment; //插件说明 + QString m_version; //版本号码。可选 + QString m_auther;//作者名称。可选 }; -- Gitee From c3d635b4c6e78343f09f7783e77f9eb6fb2b5299 Mon Sep 17 00:00:00 2001 From: XiaoPb Date: Tue, 7 Feb 2023 16:12:04 +0800 Subject: [PATCH 24/24] =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/columnedit.cpp | 8 ++++---- src/include/pluginGl.h | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/columnedit.cpp b/src/columnedit.cpp index 92cab56..3fae34a 100755 --- a/src/columnedit.cpp +++ b/src/columnedit.cpp @@ -54,7 +54,7 @@ void ColumnEdit::slot_bigChar(bool isCheck) ui.capital->setEnabled(isCheck); } -//自动调整当前窗口的状态 +//Զǰڵ״̬ QWidget* ColumnEdit::autoAdjustCurrentEditWin() { QWidget* pw = m_editTabWidget->currentWidget(); @@ -93,7 +93,7 @@ void ColumnEdit::slot_ok() QString prefix = ui.prefix->text(); bool isCapital = ui.capital->isChecked(); - //是插入文本模式 + //Dzıģʽ if (ui.textGroupBox->isChecked()) { @@ -138,7 +138,7 @@ void ColumnEdit::slot_ok() } else { - //这里要加个提示 + //ҪӸʾ QApplication::beep(); return; } @@ -209,7 +209,7 @@ void ColumnEdit::slot_ok() lineText.chrg.cpMin = static_cast(lineBegin); lineText.chrg.cpMax = static_cast(lineEnd); lineText.lpstrText = lineData.data(); - //获取原始行的内容 + //ȡԭʼе pEdit->SendScintilla(SCI_GETTEXTRANGE, 0, &lineText); if (lineEndCol < cursorCol) diff --git a/src/include/pluginGl.h b/src/include/pluginGl.h index 5c0535e..135babf 100755 --- a/src/include/pluginGl.h +++ b/src/include/pluginGl.h @@ -15,11 +15,11 @@ struct ndd_proc_data { - QString m_strPlugName; //插件名称 必选 - QString m_strFilePath; //lib 插件的全局路径。必选 - QString m_strComment; //插件说明 - QString m_version; //版本号码。可选 - QString m_auther;//作者名称。可选 + QString m_strPlugName; // ѡ + QString m_strFilePath; //lib ȫ·ѡ + QString m_strComment; //˵ + QString m_version; //汾롣ѡ + QString m_auther;//ơѡ }; -- Gitee