Qt软件开发文档1---Cmake编译QT程序

CmakeTest文件夹下 有如下结构:
这里写图片描述
最外层CMakeLists.txt文件

project(MainAPP)

cmake_minimum_required(VERSION 3.1.3)

add_subdirectory(splitterDll)

add_subdirectory(treeViewDll)

add_subdirectory(dllManager)

add_subdirectory(dockWeiget)

add_subdirectory(btn_infoDll)

add_subdirectory(tabDll)


其中dockWidget为主程序入口,build为cmake生成的文件
其余为生成的动态Dll生成程序
除去build 每个文件夹子目录下均有对应的Cmakelists.txt

dll下的CmakeLists(以TreeViewDll为例)
这里写图片描述


#设置工程包含当前目录,非必须
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON) 

add_definitions("-DLIBHELLO_BUILD")

#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON) 

#查找需要的Qt库文件
find_package(Qt5Widgets)  
find_package(Qt5Core)
find_package(Qt5Gui)
find_package(Qt5Xml)

#查找当前文件夹中的所有源代码文件,也可以通过Set命令将所有文件设置为一个变量
set(SRC_FILES delegate.cpp treeviewdll.cpp treeview.cpp) 
#同理,查找当前文件夹中所有的头文件
set(HEAD_FILES delegate.h treeviewdll.h treeviewdll_global.h treeview.h) 
#同理,查找当前文件夹中所有的ui文件
#FILE(GLOB UI_FILES "./*.ui") 

#通过Ui文件生成对应的头文件,一定要添加
#qt5_wrap_ui(WRAP_FILES ${UI_FILES})

#添加资源文件
#set(RCC_FILES rcc.qrc)

#将ui文件和生成文件整理在一个文件夹中,非必须
#source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} )

#创建工程文件
add_library(treeDll SHARED ${SRC_FILES} ${HEAD_FILES} )

set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

set_target_properties(treeDll PROPERTIES OUTPUT_NAME "treeDll")

target_link_libraries(
treeDll
    Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Xml
)

主程序入口dockWidget如下
这里写图片描述
对应CmakeList

include_directories(${PROJECT_SOURCE_DIR}/treeDll)
include_directories(${PROJECT_SOURCE_DIR}/splitterDll)
include_directories(${PROJECT_SOURCE_DIR}/dllManager)
include_directories(${PROJECT_SOURCE_DIR}/btn_infoDll)
include_directories(${PROJECT_SOURCE_DIR}/tabDll)

#设置工程包含当前目录,非必须
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON) 

#查找需要的Qt库文件
find_package(Qt5Widgets)  
find_package(Qt5Core)
find_package(Qt5Gui)
find_package(Qt5Xml)


#查找当前文件夹中的所有源代码文件,也可以通过Set命令将所有文件设置为一个变量
FILE(GLOB SRC_FILES "./*.cpp") 
#同理,查找当前文件夹中所有的头文件
FILE(GLOB HEAD_FILES "./*.h") 
#同理,查找当前文件夹中所有的ui文件
#FILE(GLOB UI_FILES "./*.ui") 

#通过Ui文件生成对应的头文件,一定要添加
#qt5_wrap_ui(WRAP_FILES ${UI_FILES})

#添加资源文件
FILE(GLOB RES "./*.qrc")

QT5_ADD_RESOURCES(RES_RCC ${RES})
#将ui文件和生成文件整理在一个文件夹中,非必须
#source_group("Ui" FILES ${UI_FILES} ${WRAP_FILES} )

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin)
#创建工程文件
add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEAD_FILES} ${RES_RCC})

#添加Qt5依赖项
target_link_libraries(${PROJECT_NAME} 
Qt5::Widgets Qt5::Core Qt5::Gui Qt5::Xml 
    treeDll  
    splitterDll 
    dllManager
)

在Cmake中编译构建项目:
这里写图片描述
编译完成后,build文件中 vs2013打开构建的sln程序
这里写图片描述
用vs构建项目
对应的bin/debug目录下存放的是lib/dll/exe 文件
dockWidget中存放的是 xml ini等

CMake编译完成~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值