3 Star 11 Fork 11

xin-yue / XQt6

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CMakeLists.txt 5.62 KB
一键复制 编辑 原始数据 按行查看 历史
#请求CAMKE的最小构建版本
cmake_minimum_required(VERSION 3.5)
#设置项目名称
project(MyQt VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_DEBUG_POSTFIX "d")
include(CMake_Config.cmake)
#查找include目录下的所有*.hpp,*.h头文件,并路径列表保存到 INCLUDE_DIR_LIST 变量中
FIND_INCLUDE_DIR(INCLUDE_SRC "Src" )
FIND_INCLUDE_DIR(INCLUDE_TEST "Test")
include_directories(${INCLUDE_SRC})
include_directories(${INCLUDE_TEST})
#第三方库头文件加入
#include_directories(ThirdPpartyLibrary)
#自定义python类
#FIND_INCLUDE_DIR(INCLUDE_MyPython Python)
#include_directories(${INCLUDE_MyPython})
#file(GLOB_RECURSE PythonFile "Python/*.cpp" "Src/Python/*.py")
#第Python3.1加入
#set(PythonPath "D:/anaconda3")
#set(PY_INCLUDE_DIR ${PythonPath}/include)
#set(PY_LIB_DIR ${PythonPath}/libs)
#include_directories(${PY_INCLUDE_DIR})
#link_directories(${PY_LIB_DIR})
#递归搜索目录下的源文件添加到变量中
file(GLOB_RECURSE SrcFile "Src/*.cpp" )
file(GLOB_RECURSE TestFile "Test/*.cpp")
file(GLOB_RECURSE ResFile "Resource/*.qrc")
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Widgets Core5Compat Network Gui Sql Charts Core )
find_package(Qt6 REQUIRED COMPONENTS Widgets Core5Compat Network Gui Sql Charts Core)
set(EXPORT_NAME XQt${QT_VERSION_MAJOR})
find_package(zlib CONFIG REQUIRED)
find_package(QXlsxQt6 REQUIRED)
message(STATUS "QXlsx_FOUND = ${QXlsx_FOUND}")
message(STATUS "zlib_FOUND = ${zlib_FOUND}")
#设置可执行文件的输出目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/bin)
#添加参加编译的文件
add_executable(${PROJECT_NAME}
${TestFile}
${ResFile}
)
target_link_libraries(${PROJECT_NAME}
${EXPORT_NAME}
)
# 创建输出目录
#file(MAKE_DIRECTORY ${LIBRARY_DIRECTORY})
file(GLOB_RECURSE xqObjectCpp "Src/Algorithm/*.cpp" "Src/XQAppInfo/*.cpp" "Src/XQEvent/*.cpp" "Src/XSystem/*.cpp" )
add_library(${EXPORT_NAME}Object STATIC ${xqObjectCpp})
target_link_libraries(${EXPORT_NAME}Object PUBLIC zlib QXlsx::QXlsx
Qt6::Widgets Qt6::Core5Compat Qt6::Gui Qt6::Sql Qt6::Core )#添加链接库
file(GLOB_RECURSE xqCodeCpp "Src/XQModel/*.cpp" )
add_library(${EXPORT_NAME}Code STATIC ${xqCodeCpp})
target_link_libraries(${EXPORT_NAME}Code PUBLIC ${EXPORT_NAME}Object )#添加链接库
file(GLOB_RECURSE xqWidgetCpp "Src/MyWidget/*.cpp" )
add_library(${EXPORT_NAME}Widget STATIC ${xqWidgetCpp} )
target_link_libraries(${EXPORT_NAME}Widget PUBLIC ${EXPORT_NAME}Object ${EXPORT_NAME}Code
Qt6::Widgets Qt6::Charts)#添加链接库
file(GLOB_RECURSE xqNetworkCpp "Src/XQNetwork/*.cpp" )
add_library(${EXPORT_NAME}Network STATIC ${xqNetworkCpp})
target_link_libraries(${EXPORT_NAME}Network PUBLIC ${EXPORT_NAME}Object ${EXPORT_NAME}Code
Qt6::Network)#添加链接库
file(GLOB_RECURSE xqThreadCpp "Src/XQThread/*.cpp" )
add_library(${EXPORT_NAME}Thread STATIC ${xqThreadCpp})
target_link_libraries(${EXPORT_NAME}Thread PUBLIC ${EXPORT_NAME}Object ${EXPORT_NAME}Code)#添加链接库
#add_library(${EXPORT_NAME} STATIC ${SrcFile})
add_library(${EXPORT_NAME} STATIC )
target_link_libraries(${EXPORT_NAME} PUBLIC #添加链接库
${EXPORT_NAME}Object ${EXPORT_NAME}Code ${EXPORT_NAME}Widget ${EXPORT_NAME}Network ${EXPORT_NAME}Thread
)
set(source_directory "${CMAKE_SOURCE_DIR}/Resource")
set(destination_directory "${CMAKE_INSTALL_PREFIX}/Resource/${EXPORT_NAME}")
#拷贝资源文件
add_custom_command(
TARGET ${EXPORT_NAME}Widget POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove_directory ${destination_directory}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${source_directory} ${destination_directory}
COMMENT "Copying directory from ${source_directory} to ${destination_directory}"
VERBATIM
)
#安装头文件
file(GLOB_RECURSE XQT_PUBLIC_HDRS "Src/*.h" "Src/*.hpp" )
install(FILES ${XQT_PUBLIC_HDRS} DESTINATION "include/${EXPORT_NAME}")
set_target_properties(${EXPORT_NAME} PROPERTIES
OUTPUT_NAME ${EXPORT_NAME}
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION}
PUBLIC_HEADER "${XQT_PUBLIC_HDRS}"
)
#安装库
install(TARGETS ${EXPORT_NAME}Object ${EXPORT_NAME}Code ${EXPORT_NAME}Widget ${EXPORT_NAME}Network ${EXPORT_NAME}Thread ${EXPORT_NAME}
EXPORT ${EXPORT_NAME}Targets # 导出
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)
# 生成 xxxTargets.cmake文件
install(
EXPORT ${EXPORT_NAME}Targets
DESTINATION lib/cmake/${EXPORT_NAME}
FILE ${EXPORT_NAME}Targets.cmake
#NAMESPACE ${EXPORT_NAME}::
)
#======================生成 xxxConfig.cmake===============================
# 该变量会通过xxxConfig.cmake.in用于在生成的xxxConfig.cmake中
set(INCLUDE_DIRS include/${EXPORT_NAME})
set(LIBRARIES ${EXPORT_NAME})
set(LIB_DIR lib)
# 由cmake提供
include(CMakePackageConfigHelpers)
# 生成 xxxConfigVersion.cmake文件
write_basic_package_version_file(
${PROJECT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake
VERSION ${VERSION}
COMPATIBILITY SameMajorVersion
)
# 用于生成 xxxConfig.cmake文件
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/${EXPORT_NAME}Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}Config.cmake"
INSTALL_DESTINATION lib/cmake/${EXPORT_NAME}
PATH_VARS INCLUDE_DIRS LIBRARIES LIB_DIR
INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
install(
FILES ${PROJECT_BINARY_DIR}/${EXPORT_NAME}Config.cmake ${PROJECT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake
DESTINATION lib/cmake/${EXPORT_NAME}
)
1
https://gitee.com/xin___yue/XQt6.git
git@gitee.com:xin___yue/XQt6.git
xin___yue
XQt6
XQt6
master

搜索帮助