123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- cmake_minimum_required(VERSION 3.22)
- project(Library_Project VERSION 1.1 LANGUAGES CXX)
- set(CMAKE_AUTOUIC ON)
- set(CMAKE_AUTOMOC ON)
- set(CMAKE_AUTORCC ON)
- set(CMAKE_CXX_STANDARD 17)
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
- #=========================================================
- #******************* 设置可执行文件名称 ******************
- #=========================================================
- #=========================================================
- #***************** 设置可执行文件输出位置 ****************
- #=========================================================
- #设置可执行文件和库位置,可能是qt tools的bug,选择32位依旧是64位编译器
- if(CMAKE_SYSTEM_NAME MATCHES "Linux")
- # message(STATUS "Using Linux System")
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
- elseif(CMAKE_BUILD_TYPE MATCHES Release)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
- endif()
- elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
- # message(STATUS "Using Windows System")
- if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
- message(STATUS "Using Compiler : ${CMAKE_CXX_COMPILER_ID}")
- #设置日志库的位置,判断32位和64位,CMAKE_CL_64已经被废弃
- if(CMAKE_SIZEOF_VOID_P EQUAL 8)
- # message(STATUS "Using 64bit Compiler")
- #设置可执行文件输出位置
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
- #设置库生成位置
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_64)
- elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
- # message(STATUS "Using 32bit Compiler")
- #设置可执行文件输出位置
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
- #设置库生成位置
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_GNU_32)
- endif()
- elseif(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- #不支持MSVC
- # message(FATAL_ERROR "MSVC is not supported")
- #设置可执行文件输出位置
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_MSVC)
- #设置库生成位置
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_MSVC)
- endif()
- elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- # message(STATUS "Using MacOS System")
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Debug)
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Debug)
- elseif(CMAKE_BUILD_TYPE MATCHES Release)
- set(exec_out_path ${CMAKE_SOURCE_DIR}/../bin_Release)
- set(BUILD_LIB_PATH ${CMAKE_SOURCE_DIR}/../bin_Release)
- endif()
- else()
- message(FATAL_ERROR "Unknown System")
- endif()
- #设置库和可执行文件的输出位置
- set(EXECUTABLE_OUTPUT_PATH ${exec_out_path})
- set(LIBRARY_OUTPUT_PATH ${exec_out_path})
- #指定库的位置,方便寻找
- link_directories(${BUILD_LIB_PATH})
- #=========================================================
- #******************* 定义一些参数变量 *******************
- #=========================================================
- #设置MSVC的一些编译属性
- if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- #设置MSVC使用UTF-8,这一句是必须的,否则中文会乱码,添加这一句,也不是设置为UTF-8 with BOM编码格式了
- add_compile_options(
- "$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>"
- "$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>"
- )
- #消除MSVC对SPDLOG的兼容性警告
- add_compile_definitions("_SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING")
- #添加MSVC的宏定义
- add_compile_definitions(MSVC)
- endif()
- #添加一些gcc的编译属性
- if(CMAKE_CXX_COMPILER_ID MATCHES GNU)
- # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
- # #添加编译参数,这个参数会应用到全局,C和C++都会生效
- add_compile_options(-Wall -O2)
- #添加GCC的宏定义
- add_compile_definitions(GCC)
- endif()
- #定义一些宏
- if(CMAKE_BUILD_TYPE MATCHES Debug)
- add_compile_definitions(C_DEBUG)
- elseif(CMAKE_BUILD_TYPE MATCHES Release)
- add_compile_definitions(C_RELEASE)
- endif()
- if(CMAKE_CXX_COMPILER_ID MATCHES MSVC)
- add_compile_definitions(MSVC)
- elseif(CMAKE_CXX_COMPILER_ID MATCHES GNU)
- add_compile_definitions(GNU)
- endif()
- #需要定义这个宏,才会使用编译好的动态库
- add_compile_definitions(SPDLOG_COMPILED_LIB)
- #给spdlog添加宏定义,使其支持%#等源文件相关的标志
- add_compile_definitions(SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE)
- #使用spdlog的静态库
- option(ENABLE_SPDLOG_STATIC_LIB "Enable spdlog static library" ON)
- #=========================================================
- #********************* 搜索添加包 **********************
- #=========================================================
- find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
- find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
- find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
- Widgets
- Core
- # SerialPort
- Network
- # Multimedia
- Sql
- REQUIRED
- )
- include(${CMAKE_SOURCE_DIR}/External/Libraries/Libraries.cmake)
- # include(${CMAKE_SOURCE_DIR}/External_Ex/Library_EX.cmake)
- #=========================================================
- #**************** 搜索添加头文件和源文件 *****************
- #=========================================================
- #包含头文件
- include_directories(
- )
- #包含源文件
- file(GLOB GLOBAL_SRC
- )
- #=========================================================
- #******************** 生成可执行程序 ********************
- #=========================================================
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/mqtt)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/http)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/threadPool)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/ftp)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/OneThread)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/timer)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/time)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/VideoPlayer)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/xlsx)
- add_subdirectory(${CMAKE_SOURCE_DIR}/demo/DesignerPattern)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/ViewModel)
- # add_subdirectory(${CMAKE_SOURCE_DIR}/demo/VideoPlayerGL)
|