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 0630f73..0000000 Binary files a/icons/icon.ico and /dev/null differ diff --git a/json/additional_properties.json b/schema/additional_properties.json similarity index 100% rename from json/additional_properties.json rename to schema/additional_properties.json diff --git a/json/arrays.json b/schema/arrays.json similarity index 100% rename from json/arrays.json rename to schema/arrays.json diff --git a/json/boolean.json b/schema/boolean.json similarity index 100% rename from json/boolean.json rename to schema/boolean.json diff --git a/json/numbers.json b/schema/numbers.json similarity index 100% rename from json/numbers.json rename to schema/numbers.json diff --git a/json/objects.json b/schema/objects.json similarity index 100% rename from json/objects.json rename to schema/objects.json diff --git a/json/oneOf.json b/schema/oneOf.json similarity index 100% rename from json/oneOf.json rename to schema/oneOf.json diff --git a/json/refs.json b/schema/refs.json similarity index 100% rename from json/refs.json rename to schema/refs.json diff --git a/json/strings.json b/schema/strings.json similarity index 100% rename from json/strings.json rename to schema/strings.json diff --git a/json/test.json b/schema/test.json similarity index 100% rename from json/test.json rename to schema/test.json diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index f268a8c..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -# 递归添加头文件和源文件 -file(GLOB_RECURSE SRCS *.cpp) -file(GLOB_RECURSE INCS *.hpp *.h) - -target_sources(${PROJECT_NAME} PRIVATE ${INCS} ${SRCS}) \ No newline at end of file