From 0a78d7cc34713f47ef27b9ec963af22d407d6c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=87=E8=9B=BE?= Date: Fri, 3 Nov 2023 14:18:13 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=86=85=E5=AE=B9=20(#5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重命名自动生成的头文件 - 修改`json`文件夹名称为`schema` - 删除Simple例程中不必要的内容 --- CMakeLists.txt | 51 ++++++++++---------- config.h.in => Config.h.in | 0 examples/Simple/CMakeLists.txt | 11 ++--- examples/Simple/logo.rc | 1 - examples/Simple/main.cpp | 18 ------- examples/Simple/res.qrc | 5 -- icons/icon.ico | Bin 16958 -> 0 bytes {json => schema}/additional_properties.json | 0 {json => schema}/arrays.json | 0 {json => schema}/boolean.json | 0 {json => schema}/numbers.json | 0 {json => schema}/objects.json | 0 {json => schema}/oneOf.json | 0 {json => schema}/refs.json | 0 {json => schema}/strings.json | 0 {json => schema}/test.json | 0 src/CMakeLists.txt | 5 -- 17 files changed, 29 insertions(+), 62 deletions(-) rename config.h.in => Config.h.in (100%) delete mode 100644 examples/Simple/logo.rc delete mode 100644 examples/Simple/res.qrc delete mode 100644 icons/icon.ico rename {json => schema}/additional_properties.json (100%) rename {json => schema}/arrays.json (100%) rename {json => schema}/boolean.json (100%) rename {json => schema}/numbers.json (100%) rename {json => schema}/objects.json (100%) rename {json => schema}/oneOf.json (100%) rename {json => schema}/refs.json (100%) rename {json => schema}/strings.json (100%) rename {json => schema}/test.json (100%) delete mode 100644 src/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 37d1f7c..8180a74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15) +cmake_minimum_required(VERSION 3.10) # 添加版本号信息 set(PROJECT_VERSION_MAJOR 0) # 主版本号 @@ -26,27 +26,31 @@ project( ) set(CMAKE_CXX_STANDARD 11) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# qt +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) # 选项 -option(BUILD_EXAMPLES "是否编译例程" ${PROJECT_IS_TOP_LEVEL}) -option(BUILD_DEBUG_POSTFIX_D "是否需要添加后缀以区分是debug还是release" ${PROJECT_IS_TOP_LEVEL}) +option(${PROJECT_NAME}_BUILD_EXAMPLES "是否编译例程" ${PROJECT_IS_TOP_LEVEL}) +option(${PROJECT_NAME}_BUILD_DEBUG_POSTFIX_D "是否需要添加后缀以区分是debug还是release" ${PROJECT_IS_TOP_LEVEL}) # 如果此项目作为其他项目的第三方库,以下的配置不生效 -if(PROJECT_IS_TOP_LEVEL) +if(${PROJECT_IS_TOP_LEVEL}) # 设置输出路径 include(GNUInstallDirs) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) # 静态库的文件夹位置 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) # 动态库的文件夹位置 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}) # 可执行文件的文件夹位置 - message(STATUS "[${PROJECT_NAME}] 可执行文件的文件夹位置: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") - - # 定义各个版本对应的后缀,例如d,debug版本后缀。 - if(BUILD_DEBUG_POSTFIX_D) - set(CMAKE_DEBUG_POSTFIX "d") - set(CMAKE_RELEASE_POSTFIX "") - set(CMAKE_RELWITHDEBINFO_POSTFIX "rd") - set(CMAKE_MINSIZEREL_POSTFIX "s") - endif() +endif() + +# 定义各个版本对应的后缀,例如d,debug版本后缀。 +if(${${PROJECT_NAME}_BUILD_DEBUG_POSTFIX_D}) + set(CMAKE_DEBUG_POSTFIX "d") + set(CMAKE_RELEASE_POSTFIX "") + set(CMAKE_RELWITHDEBINFO_POSTFIX "rd") + set(CMAKE_MINSIZEREL_POSTFIX "s") endif() message(STATUS "[${PROJECT_NAME}] Project ${PROJECT_NAME} v${PROJECT_VERSION}") @@ -54,9 +58,7 @@ message(STATUS "[${PROJECT_NAME}] C++ compiler ID is: ${CMAKE_CXX_COMPILER_ID}") message(STATUS "[${PROJECT_NAME}] cmake system is: ${CMAKE_SYSTEM_NAME}") message(STATUS "[${PROJECT_NAME}] install默认安装位置: ${CMAKE_INSTALL_PREFIX}") message(STATUS "[${PROJECT_NAME}] 此CMakeLists.txt是否是顶层 ${PROJECT_IS_TOP_LEVEL}") - -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) +message(STATUS "[${PROJECT_NAME}] 可执行文件的文件夹位置: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) # 识别是Qt6还是Qt5 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets) @@ -66,26 +68,25 @@ add_library(${PROJECT_NAME} OBJECT) # 添加公开的头文件 file(GLOB_RECURSE INCS include/${PROJECT_NAME}/*.hpp include/${PROJECT_NAME}/*.h) +file(GLOB_RECURSE SRCS src/*.cpp src/*.c src/*.cc) target_sources( ${PROJECT_NAME} PRIVATE ${INCS} + PRIVATE ${SRCS} ) -# 添加源文件 -add_subdirectory(src) - # 添加配置头文件,将CMake中的版本等信息转换为头文件 configure_file( - "${CMAKE_SOURCE_DIR}/config.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_INCLUDEDIR}/config.h" + "${CMAKE_SOURCE_DIR}/Config.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_INCLUDEDIR}/Config.h" ) # 生成输出头文件 include(GenerateExportHeader) generate_export_header( ${PROJECT_NAME} - EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_INCLUDEDIR}/export.h" + EXPORT_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_INCLUDEDIR}/Export.h" ) target_link_libraries( @@ -98,9 +99,9 @@ target_link_libraries( target_include_directories( ${PROJECT_NAME} PUBLIC $ - PUBLIC $ # 对外开放的头文件 + PUBLIC $ PRIVATE $ - PRIVATE $ # 私有的头文件 + PRIVATE $ PRIVATE $ ) @@ -132,6 +133,6 @@ install( RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) -if(BUILD_EXAMPLES) +if(${${PROJECT_NAME}_BUILD_EXAMPLES}) add_subdirectory(examples) endif() \ No newline at end of file diff --git a/config.h.in b/Config.h.in similarity index 100% rename from config.h.in rename to Config.h.in diff --git a/examples/Simple/CMakeLists.txt b/examples/Simple/CMakeLists.txt index d603461..415d091 100644 --- a/examples/Simple/CMakeLists.txt +++ b/examples/Simple/CMakeLists.txt @@ -2,14 +2,15 @@ cmake_minimum_required(VERSION 3.10) # 工程名称 project(Simple VERSION ${PROJECT_VERSION}) -message(STATUS "${PROJECT_NAME} v${PROJECT_VERSION}") set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) +message(STATUS "${PROJECT_NAME} v${PROJECT_VERSION}") + # qt find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) # 识别是Qt6还是Qt5 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) @@ -17,12 +18,6 @@ find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) file(GLOB_RECURSE SRCS *.cpp) file(GLOB_RECURSE INCS *.hpp *.h) -# 添加配置头文件,将CMake中的版本等信息转换为头文件 -configure_file( - "${CMAKE_SOURCE_DIR}/config.h.in" - "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_INCLUDEDIR}/config.h" -) - # 制作可执行文件 add_executable( ${PROJECT_NAME} diff --git a/examples/Simple/logo.rc b/examples/Simple/logo.rc deleted file mode 100644 index c19e768..0000000 --- a/examples/Simple/logo.rc +++ /dev/null @@ -1 +0,0 @@ -IDI_ICON1 ICON DISCARDABLE "../../icons/icon.ico" \ No newline at end of file diff --git a/examples/Simple/main.cpp b/examples/Simple/main.cpp index 4da9bae..9c1bbc0 100644 --- a/examples/Simple/main.cpp +++ b/examples/Simple/main.cpp @@ -1,29 +1,11 @@ -#include - #include #include "MainWindow.h" int main(int argc, char *argv[]) { - qSetMessagePattern( - "[%{time yyyy-MM-dd h:mm:ss.zzz}] [%{time process}] " - "[%{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{" - "endif}%{if-fatal}F%{endif}]: %{message}\t| (%{function}) [%{file}:%{line}]"); - - QApplication::setOrganizationName("moth"); // 此属性保存编写此应用程序的组织的名称 - QApplication::setApplicationName(PROJECT_NAME); // 程序名 - QGuiApplication::setApplicationDisplayName(PROJECT_NAME); // 程序名 - QGuiApplication::setApplicationVersion(PROJECT_VERSION); // 程序版本 - -#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -#endif - QApplication app(argc, argv); - app.setWindowIcon(QIcon(":/icon.ico")); // 给app添加图标 MainWindow w; w.show(); return app.exec(); diff --git a/examples/Simple/res.qrc b/examples/Simple/res.qrc deleted file mode 100644 index 11965d1..0000000 --- a/examples/Simple/res.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - ../../icons/icon.ico - - diff --git a/icons/icon.ico b/icons/icon.ico deleted file mode 100644 index 0630f7318c6700a4339e60d29e6d5be5b7adeeb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16958 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