VisualGDB系列8:使用VS创建CMake Linux项目
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成。主要是作为个人学习记录。有错误的地方,Robin欢迎大家指正。
本文介绍如何使用VS来创建、构建、调试一个基于CMake的项目。当编辑该项目时,会使用高级CMake项目子系统来自动更新CMakeLists.txt文件。
注意:开始本文如下步骤之前,确保所使用的VisualGDB为5.3或更新版本。
1 选择Linux项目向导
启动VS并打开”New Project”对话框。”VisualGDB”下选择”Linux Project Wizard”:
2 选择项目类型
在”New Linux Project”页面,”Create a new project”->”Application(executable file)”->”Use CMake”,并勾选”Use the advanced CMake Project Subsystem”复选框:
3 选择Linux电脑
在下一页选择你的目标Linux电脑并点击”Next”。如果你之前没有使用VisualGDB配置过到这台电脑的连接,参考《使用VS来开发Linux程序》来建立连接。
4 设置源码访问方式
下一页设定Linux机器如何访问源码。最简单的方式是采用默认设置:将修改的源码更新到Linux机器上。
你也可以配置VisualGDB将源码直接存储在Linux机器上,并通过SSH方式访问。具体参考《配置VS直接通过SSH方式访问Linux项目》。
5 构建项目
项目创建好后,点击Ctrl+Shift+B来build你的solution:
6 断点调试
在main()函数中设置一个断点,按F5确保项目能够调试:
7 GUI方式管理项目target及修改各种配置
接下来介绍如何使用GUI来管理项目targets及修改各种settings。
7.1 再创建一个可执行程序
首先我们在创建一个可执行程序。Solution Explorer中,在”.vgdbcmake”节点上右键点击,选择”Add”->”New Item”,选择”Executable”,并在location中添加子目录”/subdir”:
VisualGDB会自动创建”subdir”文件夹,并在该文件夹下创建一个CMakeLists.txt文件,然后使主程序的CMakeLists文件引用该CMakeLists.txt文件。
然后将main.cpp文件的内存拷贝到新程序的文件中(只是需要替换hello信息),并构建该项目:
7.2 在新程序中再添加一个源文件
在新项目AnotherExecutable中再添加一个源文件:
在location中添加文件夹”subdir2”,并将新的源文件保存到该文件夹下:
7.3 配置属性/参数
在VisualGDB CMake Project中的每个CMake target都拥有各自独立的properties set。
调试相关的properties,比如命令行参数,都存到各自的项目文件中。
构建(build)相关的properties,比如include目录,将自动保存到CMakeLists.txt文件中。
对于主应用程序,打开VS Project Properties,并设置命令行参数为非空值:
7.4 调试观察
在主程序上右键,选择”Debug”->”Start”,启动一个新的程序实例并开始调试它:
现在可以观察一下VisualGDB如何启动选择的目标,以及命令行参数如何匹配target settings所设置的参数:
8 对源文件和目标进行分组管理
打开项目的VS Properties(通过节点.vgdbcmake),可以使用”Sorting/Grouping”下的配置来控制VisualGDB的分组策略。比如,设置”Group Source By Types”为”False”:
设置后,可以看到”Source Files”节点消失了,然后所有的源文件显示在目标节点下:
9 CMake如何处理子项目
下面我们将展示CMake如何处理子项目。从子目录下打开文件CMakeLists.txt并添加如下代码:
project(subproj)
保存CMakeLists文件后观察Solution Explorer,可以看到两个项目节点,每个项目都有一个声明:
10 冗余目标过滤隐藏
如果一个CMake项目包括其他项目,CMake将会两次展示被包含项目(inner project,内部项目):一次是作为外部项目(including project/outer project)的部分,一次是作为内部项目(included project/inner project)的部分。
这显然很不方便,VisualGDB能够自动隐藏冗余目标实例。可以使用VS settings中的”Hide Redundant Targets” settings来对.vgdbcmake项目进行控制过滤:
如果选择了”HideInnerProjectTargets”,所有的targets作为外部项目来展示(就像没有内嵌的项目一样)。
如果选择了” HideOuterProjectTargets”,VisualGDB将会显示内部项目节点中的所有targets(targets inside the inner project nodes)。
11 构建时进行项目过期检测
和MSBuild项目不同的是,除非你要对项目进行构建(build),否则CMake项目不会自动检测项目是否过期。所以,当你尝试要调试一个项目时,将会弹出提示对该项目进行构建:
如果想改变这种行为,需要打开”Rely on CMake up-to-date Check”,并重新加载该项目:
请注意,上面这种机制并不是一直有效:CMake经常错误地判断一些大型的项目过期了,而实际上它们并没有过期。所有,要使用View->Output->VisualGDB CMake Output面板来观察CMake的诊断输出。
12 包含多目录多目标的CMake项目的构建
如果一个CMake项目在多个目录下包含多个目标(targets),可以选择性的构建选中的目录。在目标节点上右键,然后选择”Build Target”:
注意,如果相同的目录下包含多个targets,这个”Build Target”命令将会build该目录下的所有targets。
13 如何编辑target properties
下面介绍如何编辑目标的properties。选择其中一个target,打开VS Project Properties,并设置Warning Level为Pedantic:
然后观察VisualGDB如何自动将target_compile_options声明添加到对应的CMakeLists文件中:
14 如何为CMake项目设置全局settings
最后介绍如何为VisualGDB CMake项目设置全局的settings。在项目节点上右键选择”VisualGDB Project Properties”:
在VisualGDB Project Properties窗口中,可以配置各种settings,比如Intellisense,static code analysis,debug/deployment settings:
转载于:https://www.cnblogs.com/robinex/p/7868893.html
VisualGDB系列8:使用VS创建CMake Linux项目相关推荐
- VisualGDB 系列
VisualGDB系列11:Linux C++项目中使用外部Linux库 VisualGDB系列10:快速调试Linux应用程序 VisualGDB系列9:配置VS直接通过SSH方式访问Linux项目 ...
- maven web项目导入sts_Spring Boot2 系列教程(二)创建 Spring Boot 项目的三种方式
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 43W+,如下图: 2017 年由于种种原因,就没有 ...
- 手动添加linux用户,Linux入门教程:如何手动创建一个Linux用户
想到要创建一个用户的时候,我们马上想到了useradd命令或者在图像下进行建立,但是这样并没有真正的了解linux用户的生成步骤,我们知道在linux下"一切皆文件",那么对于一个 ...
- Android官方开发文档Training系列课程中文版:创建自定义View之View的创建
原文地址:http://android.xsoftlab.net/training/custom-views/index.html 引言 Android框架含有大量的View类,这些类用来显示各式各样 ...
- linux系统创建操作系统用户,linux系统中用户组创建管理linux操作系统 -电脑资料...
用户组管理包括对用户组创建,删除,修改及查看组操作命令,下面我们一起来看看希望本文章对各位同学会有所帮助哦, 1,创建组 groupadd test 增加一个test组 2,修改组 groupmod ...
- VMweare 典型创建 Kali Linux 虚拟机
[准备工作] 工具:VMware Workstation Pro 来源:https://www.vmware.com/cn.html 镜像下载:https://www.kali.org/downloa ...
- YOCTO项目介绍:通过提供模版、工具和方法帮助开发者创建基于linux内核的定制系统
目录 YOCTO项目介绍 配置内核 build配套 Yocto ,是一个开源社区.它通过提供模版.工具和方法帮助开发者创建基于linux内核的定制系统,支持ARM, PPC, MIPS, x86 (3 ...
- Linux下SVN创建新的项目
Linux下SVN创建新的项目 Linux环境下的SVN创建新的项目 一.前置条件: 1)有安装了linux系统的服务器,123.*.*.29 2)服务器上安装了svn,本人服务器的svn的数据安装的 ...
- linux中怎么创建管道文件,Linux 管道文件
管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别.有名管道叫named ...
- 机器学习系列4 使用Python创建Scikit-Learn回归模型
本文中包含的案例jupyter笔记本可在我的资源中免费下载: 机器学习系列4 使用Python创建Scikit-learn线性回归模型.ipynb 图1 使用Python和Scikit-learn库实 ...
最新文章
- VS C/C++控制台程序添加内存泄漏自动检测功能
- 星外主机管理系统可以装到内网_智慧消防管理系统_消防物联网远程管理平台...
- 计算机网络·片偏移练习题
- OpenCV编写视频文件的实例(附完整代码)
- mysql手工注入——盲注
- nopCommerce的源代码结构和架构
- springboot问题Description Resource Path Location Type Java compiler level does not match the version o
- 返回值被忽略_《Jenkins Tips 001》 忽略 Shell 步骤中的故障
- 【软技能】代码先放一放,学习一下工程的概念
- STL源码剖析 算法章节 算法总览
- VBA - 字典实例集锦
- 【C++】函数的形参
- 【ElasticSearch】IK分词加入标点符号
- Graham Scan凸包算法
- KDE桌面没有wifi的解决方案
- 常用 css html 样式
- 如何判断自己的操作系统是32位还是64位?
- 模型调参(一):weight decay(权重衰减)【“权重衰减”也叫“L1/L2正则化”】【权重衰减系数:正则项系数 λ】【对参数w有影响、对偏置b没影响】【偏置不加正则】
- LeetCode程序员面试金典(第 6 版)中
- 转 纯真IP数据库格式详解