DPS/CMakeLists.txt

77 lines
2.7 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

cmake_minimum_required(VERSION 3.5)
project(DPS)
find_package(Qt5 COMPONENTS Core Widgets Gui WebEngineCore WebEngineWidgets REQUIRED)
# 启用自动处理 UIC/MOC/RCC
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (Debug/Release/RelWithDebInfo/MinSizeRel)" FORCE)
endif()
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo" "MinSizeRel")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0") # Debug模式禁用优化包含调试符号
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") # Release模式最大优化[2,6](@ref)
if(MSVC)
#add_compile_options(/W4 /WX) # Windows: 开启所有警告并视警告为错误
add_compile_options(/utf-8)
else()
add_compile_options(-Wall -Wextra -Wpedantic -Werror) # Linux/macOS: 严格警告[1](@ref)
endif()
# 针对aarch64架构的特殊处理
if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
message(STATUS "Building for ARM64 (aarch64)")
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
include_directories(include)
file(GLOB_RECURSE SOURCES "DataPlatform/*.cpp" "DataPlatform/*.c" "DataPlatform/*.cc") # 自动收集源码,建议手动指定关键文件
file(GLOB_RECURSE HEADERS "DataPlatform/*.hpp" "DataPlatform/*.h")
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
# 链接 Qt 模块
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::WebEngineCore
Qt${QT_VERSION_MAJOR}::WebEngineWidgets
)
# 指定链接库目录的路径
target_link_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/lib)
# 链接其他必要的库
if(WIN32)
message(STATUS "Configuring for Windows")
target_link_libraries(${PROJECT_NAME} PRIVATE WebQt)
target_link_libraries(${PROJECT_NAME} PRIVATE CCSReport)
target_link_libraries(${PROJECT_NAME} PRIVATE ODI_Common)
target_link_libraries(${PROJECT_NAME} PRIVATE ODI_DPS)
target_link_libraries(${PROJECT_NAME} PRIVATE CodeGenerator)
target_link_libraries(${PROJECT_NAME} PRIVATE xlnt)
target_link_libraries(${PROJECT_NAME} PRIVATE SqlcipherTool)
elseif(UNIX AND NOT APPLE) # 明确排除 macOS
message(STATUS "Configuring for Linux")
endif()
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
)