要求:boost的msvc版本的动态库静态链接版本,编译器版本qt的msvc编译器
cmake_minimum_required(VERSION 3.27)
project(reader-ai1)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
if (WIN32)
add_compile_definitions(NOMINMAX _USE_MATH_DEFINES)
endif()
if (MSVC)
add_compile_options(/utf-8 /Zc:preprocessor /EHsc /bigobj /WX /Qspectre-)
else()
if (WIN32)
add_compile_options(-finput-charset=utf-8 -fexec-charset=utf-8)
endif()
add_compile_options(-Werror -Wall)
endif()
# 设置 Qt 的路径,请确保此路径与实际安装的 Qt 版本一致
set(CMAKE_PREFIX_PATH "D:\\QT\\6.5.3\\msvc2019_64")
# 设置运行时库(Debug/Release 分别使用 /MDd 和 /MD)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd")
endif()
if (CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
endif()
# 查找 Qt6
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network)
# 收集所有 .cpp 源文件
file(GLOB sources *.cpp)
file(GLOB resources *.qrc)
# 添加可执行目标
add_executable(04_mvc_role ${sources} ${resources})
target_link_libraries(04_mvc_role PRIVATE Qt6::Core Qt6::Widgets Qt6::Network)
target_include_directories(04_mvc_role PRIVATE .)
# Boost 配置
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME OFF)
set(BOOST_ROOT "D:/boost_built")
set(BOOST_LIBRARYDIR "D:/boost_built/lib")
# 查找 Boost (filesystem 和 system)
find_package(Boost REQUIRED COMPONENTS filesystem system)
if (Boost_FOUND)
target_include_directories(04_mvc_role PRIVATE ${Boost_INCLUDE_DIRS})
target_link_libraries(04_mvc_role PRIVATE Boost::filesystem Boost::system)
else()
message(FATAL_ERROR "Boost not found!")
endif()