添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

其中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编译完成~~

./Qt持久性对象进行序列化.pdf ./Qt新渲染底层Scene Graph研究3.pdf ./Qt模块化笔记之Qt_Quick--用QQuickImageProvider给Image组件添加图片.pdf ./QT中emit,signal,slot.pdf ./Q_PROPERTY.pdf ./QT高级编程_chs.pdf ./Qt动画框架详解 ./RenderToTextureExamples.zip ./QT中文帮助文档.chm ./qt3d-intro.pdf ./Qt_Quick中文手册.pdf 此时可以关闭IDE,使用cmake-gui构建,再借助VS生成动态库,或者直接使用IDE的构建编译功能。这一步必须确保使用的构建套件与另一项目使用的完全一致,否则会出现undifined reference _imp的报错。使用Qt creator或其他ide新建一个类,比如testlib,在类中写点东西,以确定是否调用成功。找一个地方新建文件夹,命名为include之类的,将前面库的头文件放进去。此时就能正常使用库了,依旧需要注意确保构建套件与生成库时的套件完全一致。 转载:https://www.hahack.com/codes/cmake 为什么需要CMake 如果你一直在windows平台上开发,使用最多的可能就是VS的开发环境,它已经集成了全套的开发环境包括构建编译等。你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须 网上看到过不少文章,但翻来翻去网上的文章讲得都很浅显,而且有的没有到达自己想要的目的,所以自己动手写了一个。实现的要求有:配置一个EXE工程,其他若干DLL工程。每个工程下自动加载该文件夹的所有.h,.cpp,.ui文件,而不是每次添加文件都需要在CMakelists.txt文件中进行修改。我工程的目录结构如下:记得把Qt安装目录下的Qt所有dll目录加到环境变量中。然后我们直接上CMakelis... 使用Visual Studio构建Qt工程的方法有很多种,可以使用Visual Studio自带的功能手动创建配置工程,也可以创建pro文件,然后通过VS的Qt插件导入进行创建。还有一种方式是通过CMake进行管理创建,需要注意的是Qt5和Qt4有区别,这里只讲Qt5。 #设置cmake版本号 cmake_minimum_required(VERSION 3.4.0) #设置工程名称... #打开moc 自动编译 #moc主要用途 是将有QTOBJECT等宏的文件 展开生成编译器能识别的cpp文件 名称为moc_xxx.cpp #moc 主要是自动调用了qt库目录bin 下的moc工具命令 SET(CMAKE_AUTOMOC ON) #打开ui文件自动编译 #有窗口设计文件XXX.ui 是需要先进行uic编译生成一个ui_xxx.h的文件 SET(CMAKE_AUTOUIC ON) #rcc 主要是用来 将.qrc资源文件编译成 xx.c 作为实习内容,要通过学会用CMake部署文件到git,方便公司进行项目管理。 今天CMake生成已有的QT程序的项目时,遇到几个报错的问题,查了很久都没找到解决我的问题的办法。 其中一个是关于Qt5Cored的报错,后来想着可能是因为我装了太多的构建套件(我之前装了VS15、VS17等等差不多10个),然后索性重装,重装时只装了VS2015的32位和64位以及MinGW重装之后,然后用VS2015的64位构建套件运行就没啥问题了。 对了,重装QT后要添加环境变量的,不添加的话,会报一堆的.dll的 最近项目要用qt,因为初学没有经验,遇到些小问题常常没什么头绪,也查不到解决方法,刚刚还因为低端错误耽误了群里一位朋友的时间。决定以后如果遇到类似小问题就记录下来,也方便初学者少走弯路了。 首先,qt动态编译发布程序一般是在Qtcreater中编译出release版本... QMake是一个通过编译Pro文件自动生成Makefile文件的工具。 这里扩展一下make、makefile、cmakeCMakeLists.txt、qmake等之间的关系: 首先,当我们初学helloworld项目的时候,一般是用gcc命令进行编译的,gcc是GNU Compiler Collection(GNU编译器套件),可以理解为编译器。 当项目比较复杂,需要编译的文件比较多时,再用gcc命令逐个编译就不现实了,所以就衍生出了makefile文件和make工具。 链接:https://pan.baidu.com/s/1Xr2wP0g1UV_L6xpP9cJkxA?修改代码时在左边的项目看找不到cpp和h文件,要去src文件夹中打开。进入build文件夹,打开vs项目。此时会多出来一个build文件夹。