博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习用CMake来编写Qt程序
阅读量:6877 次
发布时间:2019-06-26

本文共 1454 字,大约阅读时间需要 4 分钟。

    近期開始学习CMake,由于项目需求须要用到Qt,自带的qmake会出现很多问题(比方文件改动之后有时候qmake不会侦測到不会又一次编译,须要手动去编译等),于是開始尝试使用CMake来编写Qt程序,顺便学习一下怎么用CMake来使用find_package,也算给自己一次学习的机会。

    切入正题。CMake对于一些有名的库都有自带目录中Modules里.cmake文件查询的支持。比方你须要编写Qt程序,你就能够去cmake_dir/Moudles/查找 FindQt4.cmake这个文件,里面具体讲述了假设你须要用到Qt库,你须要包括的变量和文件。比方他举出了 QT_USE_FILE 这个变量。你直接include在CMake脚本之后。你就不须要手动的include_diectories等等,同一时候它也会生成QT_LIBRARIES这个变量让你来target_link,因此省去了非常多自己须要逐步查询qmake所在路径和Qt库所在路径的问题。

    里面还讲到了比較简单的使用方法,

find_package(Qt4 4.4.3 REQUIRED QtCore QtGui QtXml)include(${QT_USE_FILE})add_executable(myexe main.cpp)target_link_libraries(myexe ${QT_LIBRARIES})

find_package来查询你须要用到的Qt版本号库,之后REQUIRED表示你须要用到Qt中的哪些子库,之后include它生成的文件,link它给你生成的库文件变量。你的Qt简单的Demo就成功了,是不是非常easy。

   同一时候我再来讲一下moc的简单使用方法。Qt的机制它会查询Q_OBJECT这个宏假设你的文件有这个宏。它的qmake会自己主动去moc一把生成moc_xxx.cpp文件。然后会内部帮你include他们,所在在IDE端Qt Creaotr。我们根本察觉不到这个机制在里面。所以IDE用多了有时候确实察觉不到这些比較底层的机制,用手写部署确实有其优点。回归正题,在CMake中。你怎样去实现由qmake帮你做的这些步骤呢?答案有非常多,我这里列举一个比較简单的使用方法,就是给target设置属性--set_target_properties(${target_name} PROPERTIES ${properties_name} ${properties_value}),CMake给Qt提供了AUTOMOC这个属性。能够自己主动的给给定target的项目的全部须要moc的文件自己主动moc,所以这个时候我们仅仅须要加一把set_target_properties(myexe PROPERTIES AUTOMOC ON),这个时候,CMake就会去学qmake的那套逻辑来进行自己主动moc和编译了。

    今天就先说到这,就算抛砖引玉,让很多其它的朋友学会用CMake来进行项目的管理和控制,由于有时候过度的依赖IDE确实会影响我们对正确事物的推断,学会自己编辑项目,更能更好的掌握这个项目的文件结构逻辑和开发整体方向,对库和库之间的依赖更能比用IDE更加深刻。这是我学习和尝试使用CMake的初衷,希望朋友们会喜欢这篇文章,同一时候留下你们的脚印和意见。让我们共同进步,谢谢。

转载于:https://www.cnblogs.com/clnchanpin/p/6941680.html

你可能感兴趣的文章
AI技术说:人工智能相关概念与发展简史
查看>>
eclipse启动失败
查看>>
(已解决!)精选30道Java笔试题解答
查看>>
【Python之旅】第七篇(三):使用Redis订阅服务
查看>>
linux远程桌面链接windows
查看>>
TrendMicro:新的APT***针对亚洲和欧洲政府组织,包括中国媒体机构
查看>>
C语言中sizeof与strlen区别2
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
UIWebView加载html网页时使用缓存和清空缓存
查看>>
我的友情链接
查看>>
设计模式学习笔记(六)之策略模式(Strategy)
查看>>
python运行spark脚本程序
查看>>
我的友情链接
查看>>
通过libvirt使用ceph块设备
查看>>
优秀交互设计师成长指南
查看>>
SDN网络系统之MiniNet的安装与使用
查看>>
java的Iterator和listIterator的区别
查看>>
服务器虚拟化的好处
查看>>