From 7058e5cd5e9d359fbe28f0c854d159202d96135b Mon Sep 17 00:00:00 2001 From: zmoth Date: Mon, 23 Oct 2023 09:22:48 +0800 Subject: [PATCH] perf: Minimum support c++ standard 11 --- CMakeLists.txt | 43 ++++++++++++++++++++------------------ src/QJsonSchemaWidgets.cpp | 4 ++-- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fc7342..c0f83ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,18 @@ -cmake_minimum_required(VERSION 3.15 FATAL_ERROR) +cmake_minimum_required(VERSION 3.15) -# 添加版本号 +# 添加版本号信息 set(PROJECT_VERSION_MAJOR 0) # 主版本号 set(PROJECT_VERSION_MINOR 1) # 子版本号 -set(PROJECT_VERSION_PATCH 0) # 阶段版本号 -set(PROJECT_VERSION_TWEAK 0) # build -set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK}) +set(PROJECT_VERSION_PATCH 0) # 补丁版本号 +set(PROJECT_VERSION_TWEAK 0) # 修订号,预发布版本 + +# 设置版本号 +if(${PROJECT_VERSION_TWEAK} EQUAL 0) + set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) +else() + set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}.${PROJECT_VERSION_TWEAK}) +endif() + set(PROJECT_DESCRIPTION "Qt Json Schema Form.") set(PROJECT_HOMEPAGE_URL "https://zmoth.top") @@ -18,12 +25,7 @@ project( LANGUAGES CXX ) -message(STATUS "[${PROJECT_NAME}] Project ${PROJECT_NAME} v${PROJECT_VERSION}") - -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_CXX_STANDARD 11) # 选项 option(BUILD_EXAMPLES "是否编译例程" ${PROJECT_IS_TOP_LEVEL}) @@ -31,10 +33,6 @@ option(BUILD_DEBUG_POSTFIX_D "是否需要添加后缀以区分是debug还是rel # 如果此项目作为其他项目的第三方库,以下的配置不生效 if(PROJECT_IS_TOP_LEVEL) - set(CMAKE_CXX_STANDARD 20) - set(CMAKE_DISABLE_IN_SOURCE_BUILD ON) - set(CMAKE_DISABLE_SOURCE_CHANGES ON) - # 设置输出路径 include(GNUInstallDirs) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) # 静态库的文件夹位置 @@ -51,6 +49,12 @@ if(PROJECT_IS_TOP_LEVEL) endif() endif() +message(STATUS "[${PROJECT_NAME}] Project ${PROJECT_NAME} v${PROJECT_VERSION}") +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) @@ -114,11 +118,10 @@ set_target_properties( RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR} ) -target_compile_options( - ${PROJECT_NAME} - PRIVATE $<$:/utf-8> - PRIVATE $<$:/utf-8> -) +# 设置编译器选项 +if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(${PROJECT_NAME} PRIVATE /utf-8) +endif() install( TARGETS ${PROJECT_NAME} diff --git a/src/QJsonSchemaWidgets.cpp b/src/QJsonSchemaWidgets.cpp index a9504bd..fba6d59 100644 --- a/src/QJsonSchemaWidgets.cpp +++ b/src/QJsonSchemaWidgets.cpp @@ -161,7 +161,7 @@ void QJsonSchemaObject::setOneOf(const QJsonObject &schema) auto order = schema.find("ui:order")->toArray(); for (auto valueRef : order) { QString name = valueRef.toString(); - if (widgetsMap.contains(name)) { + if (widgetsMap.count(name)) { layout->addRow(widgetsMap[name].first, widgetsMap[name].second); } } @@ -206,7 +206,7 @@ void QJsonSchemaObject::setValue(const QJsonObject &json) } for (const auto &key : json.keys()) { - if (widgetsMap.contains(key)) { + if (widgetsMap.count(key)) { QJsonSchemaWidgetsFactory::setValue(widgetsMap[key].second, json[key]); } }