Qt cmake 配置实例

记得把Qt安装目录下的Qt所有dll目录加到环境变量中。
然后我们直接上CMakelists.txt代码。

首先是Arithmetic根目录下的CMakeLists.txt,该文件比较简单,只要是包含子目录的工程:

#指定cmake的最小版本号
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)
#指定项目名称
PROJECT(Arithmetic LANGUAGES CXX)
ADD_SUBDIRECTORY(MainUI)
MainUI目录下的CMakeLists.txt,该目录会生成exe项目:

#指定cmake的最小版本号
CMAKE_MINIMUM_REQUIRED(VERSION 3.16)

#指定项目名称
PROJECT(Arithmetic LANGUAGES CXX)

#指定Qt路径和启用当前目录(按需设置)
SET(CMAKE_PREFIX_PATH ${QT_PATH}/lib/cmake)
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

#引入Qt库
FIND_PACKAGE(Qt5Widgets REQUIRED)
FIND_PACKAGE(Qt5Gui REQUIRED)
FIND_PACKAGE(Qt5Core REQUIRED)
FIND_PACKAGE(Qt5Sql REQUIRED)
FIND_PACKAGE(Qt5Network REQUIRED)
FIND_PACKAGE(Qt5Concurrent REQUIRED)

#添加预编译宏
ADD_DEFINITIONS(-DTORRENT_LIBRARY)
ADD_DEFINITIONS(-DNO_FREETYPE)
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
ADD_DEFINITIONS(-DHCPP_LEGACY_API)

#将各种文件归类到指定变量
FILE(GLOB_RECURSE HEADER_FILES "*.h")
FILE(GLOB_RECURSE SRC_FILES "*.cpp")
FILE(GLOB_RECURSE FORMS "*.ui")
FILE(GLOB_RECURSE RESOURCE_FILES "*.qrc")
FILE(GLOB TS_FILES "*.ts")
FILE(GLOB MOC_FILES "moc_*.cpp")

#将ui文件编译成ui_*.h文件
IF(FORMS)
	QT5_WRAP_UI(FORMS_UIC ${FORMS})
ENDIF()

#将包含Q_OBJECT的头文件编译成moc_*.cpp文件
QT5_WRAP_CPP(MOC_FILES ${HEADER_FILES})

#启用qrc资源文件
QT5_ADD_RESOURCES(RES_FILES resourse.qrc)

#启用当前头文件目录
SET(CMAKE_INCLUDE_CURRENT_DIR ON)

#将ui文件和生成文件整理在一个文件夹中
SOURCE_GROUP("Form Files" FILES ${FORMS})
#将qrc资源文件整理在一个文件夹中
SOURCE_GROUP("Resource Files" FILES ${RESOURCE_FILES})
#查找当前目录下所有的.h和.cpp文件
SOURCE_GROUP("Header Files" FILES ${HEADER_FILES})
SOURCE_GROUP("Source Files" FILES ${SRC_FILES})
#翻译文件
SOURCE_GROUP("Translation Files" FILES ${TS_FILES})

#将MOC,UI,QRC的中间生成文件编译进EXE中
SOURCE_GROUP("Generated Files" FILES ${MOC_FILES} ${FORMS_UIC} ${RES_FILES} ${TS_FILES})

#引入库目录路径
SET(SDK_PATH "../SDK-PATH")
LINK_DIRECTORIES(${SDK_PATH}/Lib ${SDK_PATH}/opencv3.4/lib ${SDK_PATH}/libpng/lib ${SDK_PATH}/log4cplus/lib ${SDK_PATH}/zlib/lib)

#引入库目录路径
LINK_DIRECTORIES(${CMAKE_BINARY_DIR}/x64)

#将所有文件编译成EXE,并设置以WIN32的方式运行
ADD_EXECUTABLE(${PROJECT_NAME} WIN32 ${HEADER_FILES} ${SRC_FILES} ${MOC_FILES} ${FORMS_UIC} ${RESOURCE_FILES} ${RES_FILES})

#设置EXE文件的输出目录
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/x64)

#引入库目录头文件
INCLUDE_DIRECTORIES(
 ${SDK_PATH}/libpng/include
 ${SDK_PATH}/zlib/include
 ${SDK_PATH}/log4cplus/include
 ${SDK_PATH}/opencv3.4/include
 ${SDK_PATH}/opencv3.4/include/opencv
 ${SDK_PATH}/opencv3.4/include/opencv2
 )
INCLUDE_DIRECTORIES(${AUTOGEN_BUILD_DIR})
INCLUDE_DIRECTORIES(../Define ../Algorithm)

#链接以上lib库
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PROJECT_LIBRARIES})

#链接opencv开发库
TARGET_LINK_LIBRARIES(${PROJECT_NAME}
	debug opencv_world343d.lib			optimized opencv_world343.lib					
	debug zlibstaticd.lib				optimized zlibstatic.lib
	debug libpng16_staticd.lib			optimized libpng16_static.lib
	debug log4cplusUD.lib				optimized log4cplusU.lib
)

#加载静态LIB
#TARGET_LINK_LIBRARIES(${PROJECT_NAME}
#	Algorithm.lib
#)

#启用Qt的库模块
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Sql Qt5::Network Qt5::Concurrent)
QT5_USE_MODULES(${PROJECT_NAME} Widgets Core Gui Sql Network Concurrent)
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值