cmake_minimum_required(VERSION 3.13)
#指定Qt路径(按需设置)
#SET(CMAKE_PREFIX_PATH C:/Qt/Qt5.7.0/5.7/msvc2013//lib/cmake)
#list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
#设置sln名称
project(qtlearn)
# 关闭控制台 :+ WIN32
set(QT_USE_QTMAIN TRUE)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# 自动生成开关
set(CMAKE_AUTOMOC ON)
#set(CMAKE_AUTOUIC ON)
#set(CMAKE_AUTORCC ON)
# 查找lib
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
# 查找 source
set(src_dir .)
foreach(dir ${src_dir})
string(TOUPPER "${dir}" dir_u)
file(GLOB ${dir_u}_UI_FILES ${dir}/*.ui)
file(GLOB ${dir_u}_H_FILES ${dir}/*.h)
file(GLOB ${dir_u}_CXX_FILES ${dir}/*.cpp)
list(APPEND UI_FILES ${${dir_u}_UI_FILES})
list(APPEND SRCS_FILES ${${dir_u}_CXX_FILES})
list(APPEND HEADER_FILES ${${dir_u}_H_FILES})
endforeach(dir ${src_dir})
# 自动生成的 mocs_compilation.cpp 包含所有配置的moc_*.cpp
# ui_*.h 文件,需放置在find_package之后(Unknown CMake command "QT5_WRAP_UI")
if(UI_FILES)
qt5_wrap_ui( UIC_SRCS ${UI_FILES})
endif()
# qrc_*.cpp 文件
file(GLOB RESOURCE_FILES *.qrc)
if(RESOURCE_FILES)
qt5_add_resources(RCC_SRCS ${RESOURCE_FILES})
endif()
# 添加 source
add_executable(${PROJECT_NAME} WIN32
${SRCS_FILES}
${HEADER_FILES}
${UIC_SRCS} # 添加此选项会生成 xxx_autogen 工程
#${UI_FILES} # 和${UIC_SRCS} 二选一
${RCC_SRCS})
# 依赖
target_link_libraries(${PROJECT_NAME}
Qt5::Core
Qt5::Gui
Qt5::Widgets
)
# Filter 设置
source_group("Form Files" FILES ${UI_FILES})
source_group("Generated Files" FILES ${UIC_SRCS} ${RCC_SRCS} )
source_group("Resources" FILES ${RESOURCE_FILES})
# 运行环境
set(RUN_ENVIROMENT $(QTDIR)/bin%3b)
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_DEBUGGER_ENVIRONMENT "PATH=${RUN_ENVIROMENT}$(PATH)")
#1、使用如下设置,2、取消CMAKE_AUTOMOC 3、不使用qt5_wrap_ui等
set_target_properties(${PROJECT_NAME} PROPERTIES
AUTOMOC ON
AUTORCC ON
AUTOUIC ON)