貌似有个CMake教程上说过“不要使用CMake编译Qt”,原因是Qt有自己的QMake,用CMake会费时费力,不过为了能把所有工程采用同样的编译方式,还是尝试了一下,的确很麻烦。
首先需要下载Qt SDK,因为打算用VS2010编译,所以下载了everywhere的4.7b2版本(注意:4.6.3不支持2010,强编会出错,4.7b2静态编译也会有同样的问题,估计正式版会有改善吧)
编译整体还是比较简单的
- 把VS目录下的vcvars32.bat复制到qt目录下
- 打开控制台,首先运行vcvars32.bat
- configure –platform win32-msvc2010
- nmake
- 等待N长时间编译完成,真的非常长时间
- 编译结果6G,保留bin,include,lib目录即可
4.7的编译有个缺点就是所有路径都是完整路径会写死,且不能选择编译结果的输出路径,所以要是打算多次编译一定要确定好目录,否则会很麻烦。
然后写一个简单的CMakeLists.txt文件:
#Project Name
PROJECT(BookStar)
SET(QT_FOLDER D:/qt-4.7.0-b2)
# include directories
INCLUDE_DIRECTORIES(inc
${PROJECT_BINARY_DIR}
${QT_FOLDER}/include)
# lib directories
LINK_DIRECTORIES(${QT_FOLDER}/lib)
# source
SET(SRCS
src/main.cpp
src/mainwindow.cpp
${MOCS}
)
# add exe
ADD_EXECUTABLE(BookStar ${SRCS})
TARGET_LINK_LIBRARIES( BookStar QtCore4 QtGui4 )
编译错误,原来Qt在编译时,需要首先使用uic.exe编译UI文件,通过moc.exe处理Q_OBJECT之类的宏,当然你可以去掉这些定义,否则就需要加上:
# COMPILE UIs
SET(UIS
mainwindow
)
FOREACH (ui_file ${UIS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/ui_${ui_file}.h")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/uic.exe -o ${TMP_OUT} ${TMP_IN})
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/uic.exe -o ${PROJECT_BINARY_DIR}/ui_${ui_file}.h ${PROJECT_SOURCE_DIR}/res/${ui_file}.ui")
ENDFOREACH(ui_file)
# CREATE MOC
SET(HEADERS
mainwindow
)
FOREACH (header_file ${HEADERS})
SET(TMP_IN "${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
SET(TMP_OUT "${PROJECT_BINARY_DIR}/moc_${header_file}.cpp")
EXECUTE_PROCESS(COMMAND ${QT_FOLDER}/bin/moc.exe -o ${TMP_OUT} ${TMP_IN})
SET(MOCS ${MOCS} ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp)
MESSAGE(STATUS "EXEC=${QT_FOLDER}/bin/moc.exe -o ${PROJECT_BINARY_DIR}/moc_${header_file}.cpp ${PROJECT_SOURCE_DIR}/inc/${header_file}.h")
ENDFOREACH(header_file)
这里要注意的是:EXECUTE_PROCESS在COMMAND后面不能加引号,命令直接写,否则执行的程序也不会出错,但也不会正常运行,这个曾让我纠结很久- -
当然为了实现简单,两个列表变量定义时都没有带扩展名,如果希望更清楚一些,则需要通过CMAKE的字符串处理处理一下。
编译是没有问题了,但FindQt4还不能用,不知道是不是编译时没有安装好,每次都找不到Qt的目录,这个还需要继续研究
分享到:
相关推荐
windows系统下,使用cmake, 基于Qt5.12.0 mingw 64位版本,编译Opencv3.4.11版本,生成Qt使用的第三方opencv库文件。详细讲述了从编译,以及编译中遇到的问题处理,以及Qt中使用第三方库的问题
Qt的QWebEngine默认是不支持MP4播放的,需要手动编译,比较耗时(在配置没有问题的情况下我的i7 6核 16G内存大概用了6个小时),为了方便有同样问题的小伙伴,所以上传了已经编译好的资源,需要下载后替换clang_64/lib...
整合了cmake编译qt5的vs2015工程模版,利用cmake编译qt5的vs2015工程模版, 可以更好的把项目模块话,其中还有log4cplus的cpp日志使用模版源码, 适合有一定的vs2015一起qt5开发经验的同学下载, 利用build目录里的...
本资源介绍利用CMake编译VTK 7.0.0 ,资源包括VTK7.0.0的源代码,编译说明,CMake需要自己去下载安装,QT也是需要自己下载安装。
其中压缩文件中有8.0版本,均为cmake编译,pcl中的vtk没有支持QT可以该该包替换。前者有debug和release两个版本,后者只有release的。
QtStaticCMake:使用CMake和静态Qt版本构建时生成Qt插件导入语句的宏集合
用QT做的DBus进程通讯小程序,方便学习DBus。
QT CMAKE OPENCV QT+CMAKE+OPENCV安装说明 QT5.12.3、OPENCV4.2.0配置、MINGW编译、库文件调用 QT CMAKE OPENCV QT+CMAKE+OPENCV安装说明 QT5.12.3、OPENCV4.2.0配置、MINGW编译、库文件调用 QT CMAKE OPENCV QT+...
CMake & Qt 开发 用CMake来生成和管理Qt代码,用visual studio 编译,本Sample编译后运行结果为最简单的QT对话框。
Windows下使用Qt5.7自带的MinGW+32cmake编译出来的OpenCV3.1库文件。 如果不能在您的电脑上完美使用,请您去看一下http://blog.csdn.net/phr_nick/article/details/70485919这篇文章,自己编译OpenCV源码。
cmake编译不成功QT-opencv视觉库的看这里!
win10系统64位, cmake3.4.3 opencv3.4.3 mingw版本使用得是Qt5.11中自带
qt控制台使用glfw库,需要用cmake 利用qt编译出glfw库,才能够正常使用,否则会编译不通过的
Windows下,Qt5.7自带的MinGw编译器+32位cmake编译的OpenCV的库。
osg结合qt使用:需要使用osgqt库
win7,win10 64位,cmake编译QT5.8.0mingw版本opencv3.3.0
LIVE555,CMAKE版本,LINUX QT 环境下可用。
cmake 编译。用于PCL库或QT编译,如果有需要就下载吧。
CMakeLists.txt 用于qtcreator创建cmake工程,个人笔记。
WIndows下超详细的QtMqtt编译配置教程,包含了QtMqtt源码下载、编译配置、QtMqtt帮助手册生成配置。