使用qt creator来编译 调试 用CMakeLists组织的工程
爱情原如树叶一样,在人忽视里绿了,在忍耐里露出蓓蕾。 —— 何其芳
使用CMake作为构建系统,需要自己写CMakeLists.txt,相当于qmake下的pro。
1 打开用CMakeLists.txt组织的工程:
下面是用qt creator 3.5.1做的实验:
点击file---打开文件,找到CMakeLists.txt文件,然后会弹出如下图所示的对话框,qt creator会询问你是否在存放CMakeLists.txt的文件夹的同级目录下建立另一个文件夹xxx-build,亦可以自己指定。 后面运行cmake,编译时生成的中间文件以及最终的可执行文件都会存放在这个文件夹。 相当于自己手动调用cmake编译时,一般先建立一个名字为bulid的文件夹,然后,在命令行下将路径切换到build文件夹内部,运行 cmake "CMakeLists.txt所在的路径"。
同时,它会让你在下图的Arguments行输入cmake指令,我用的是cmake 后面跟CMakeLists.txt的全路径,即如果CMakeLists.txt存放在/home/bb/cc文件夹,则cmake /home/bb/cc。
Generator行,我选择的是下图的,还有一个Ninja(Desktop Qt5.5.1 GCC 32bit)可以选择,不知道是什么。
然后点击Run Cmake按钮,运行完后会提示:Build files have been written to: xxx。最后点击finish按钮,就可以进入正常的编辑界面了,所有的文件都会组织好,显示出文件树。
现在高版本的qt creator,例如qt creator4.6,打开该种工程时,可以直接选择CMakeLists.txt,qt creator会自动配置好,可以选择build目录。
cmake的版本问题:
CMakeLists.txt文件的第一句一般对cmake的版本有要求例如:
cmake_minimum_required(VERSION 3.10)
如果当前使用的版本过低,安装高版本即可:https://blog.csdn.net/qq_35865125/article/details/81557738
例如在linux下安装,我曾经安装到了/usr/local/Cmake3.12.1路径下,然后通过qt creator的tool--options调出cmake设置界面,进行选择即可:
然后,为你使用的kit选择最新的cmke:
2 使用qt creator进行单步调试:
方法一:(原文作者并不推荐)由于CMake默认产生的是Default/release版本。可以手动编辑CMakeLists.txt文件,在文件的最后添加:
set(CMAKE_BUILD_TYPE Debug),再次构建即可。
--------------但是,我将添加前后生成的makefile进行了比较,并没有任何区别。可能区别在与其他地方吧,如果不在最后添加set(CMAKE_BUILD_TYPE Debug)的话,一点击debug就会报错:
还可以在命令行设置:--亲测可行:
cmake -DCMAKE_BUILD_TYPE=Debug ..
注意每次CMakeLists.txt改变后,最好重新Run CMake,然而arguments不必每次都填写,因为cmake会在CMakeCache.txt中记录以前所有添加过的参数。如果你改变了CMake的参数,则直接删除CMakeCache.txt,重新生成,否则有问题。另外,在qt creator中点击clean按钮并不会清楚CMakeCache.txt。
build时,release模式和debug模式的区别是什么,是不是debug模式时,添加了更多的调试信息,以为单步执行做准备?。
方法二:(qt creator3.5.1中并没有相应的操作,qt creator4.6中有!相当方便!)
工程默认的构建方式是Default,也就是release的意思。需要调整为Debug才能实现单步断点调试。
勾选完成Debug之后,请在菜单->Build点击选项“Run CMake”即可。
3 如何添加C++/C源文件和头文件?又如何添加第三方依赖库库和头文件?
唯一的方式就是手动修改CMakeLists.txt文件。右键点击工程名字后弹出的框中,add file是灰色的,所以qt creator并不支持自动添加文件到cmakelists组织的工程,自己动动爪子。
ref: