【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境

前言

想起当初第一次扩展CDT时,看着庞大的源码仓库,不知如何下手,在一步步熟悉源码的过程中也踩了不少坑。本文作为介绍CDT入门的第一篇章,将介绍如何利用源码生成一个最基本的C开发IDE。


一、环境说明


二、导入工程

导入工程

cdt的源码很庞大,构建一个最基础的ide,只需导入以下工程即可。后期基于cdt的定制及扩展,也基本上是基于以下工程展开的

  • org.eclipse.cdt.core
  • org.eclipse.cdt.core.native
  • org.eclipse.cdt.core.win32 (或org.eclipse.cdt.core.linux)
  • org.eclipse.cdt.core.win32.x86_64 (或org.eclipse.cdt.core.linux.x86_64)
  • org.eclipse.cdt.debug.core
  • org.eclipse.cdt.debug.ui
  • org.eclipse.cdt.dsf
  • org.eclipse.cdt.dsf.gdb
  • org.eclipse.cdt.dsf.gdb.ui
  • org.eclipse.cdt.dsf.ui
  • org.eclipse.cdt.gdb
  • org.eclipse.cdt.gdb.ui
  • org.eclipse.cdt.launch
  • org.eclipse.cdt.make.core
  • org.eclipse.cdt.make.ui
  • org.eclipse.cdt.managedbuilder.core
  • org.eclipse.cdt.managedbuilder.gnu.ui
  • org.eclipse.cdt.managedbuilder.ui
  • org.eclipse.cdt.native.serial
  • org.eclipse.cdt.ui
  • org.eclipse.launchbar.core
  • org.eclipse.launchbar.ui
  • org.eclipse.tm.terminal.control
  • org.eclipse.tools.templates.core
  • org.eclipse.tools.templates.freemarker
  • org.eclipse.tools.templates.ui

解决依赖

导入cdt的工程后,会发现工程编译不通过,有很多错误,莫慌,这是正常的,这是因为cdt依赖了很多第三方的一些插件。解决依赖有多种办法和技巧,接下来我们将通过自定义Target Platform的方式解决依赖的问题

定义Target Platform配置

在插件开发向导中找到新建Target Platform,在com.owner.xstudio.platform工程下新建Target Platform配置文件。加入如下配置,保存

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target includeMode="feature" name="xstudio">
	<locations>
		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
			<repository location="https://download.eclipse.org/eclipse/updates/4.22"/>
			<unit id="org.eclipse.platform.ide" version="4.22.0.I20211124-1800"/>
			<unit id="org.eclipse.jdt.annotation" version="0.0.0"/>
			<unit id="org.eclipse.ui.trace" version="0.0.0"/>
		</location>
		<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
			<repository location="https://download.eclipse.org/tools/orbit/downloads/2021-12/"/>
			<unit id="com.google.gson" version="2.8.8.v20211029-0838"/>
			<unit id="com.sun.xml.bind" version="2.3.3.v20201118-1818"/>
			<unit id="org.freemarker" version="2.3.22.v20160210-1233"/>
		</location>
	</locations>
</target>

保存后,PDE就会去fetch其中定义的plugin和feature。可能由于墙的原因,这个过程会较久甚至失败(VPN下很快)。fetch到所有的插件后,激活这个Target Platform,至此,当前工作空间下的所有插件的依赖都在此处进行配置。cdt的依赖很多,此处所描述的依赖足以满足当前导入的工程。完整的cdt的依赖,在cdt源码目录/releng/org.eclipse.cdt.target/cdt.target中
在这里插入图片描述

编译工程

至此,正常情况下工作空间不再报错。当激活的Target Platform有变化时,PDE会自动编译工作空间下的所有工程。为确保万无一失,手动clean所有的工程,重新进行编译。


三、集成插件

新建feature

新建一个feature工程,用来include cdt插件。配置如下

Overview 页

在这里插入图片描述

Include Plug-ins 页

包含如下插件
在这里插入图片描述

Dependencies 页

点击Compute按钮即可
在这里插入图片描述

添加feature

将新建的feature添加到 com.owner.xstudio.platform/xstudio.product 中即可
在这里插入图片描述


四、导出产品

至此,相关的plugin,feature,product都准备好了,正常导出product即可


五、成果展示

设置gcc环境变量

  • MINGW_HOME=D:\compiler\msys64\mingw64
  • MSYS_HOME=D:\compiler\msys64

cdt会根据这两个环境变量找到gcc和相关的头文件目录

运行

新建一个C工程

如果新建工程出错,参考出错解决
在这里插入图片描述

编译调试

如果找不到工具链,参考出错解决
在这里插入图片描述


六、总结

出错解决

导出后启动正常,新建工程时出错

eclipse 4.22版本的PDE导出product时编译的plugin貌似有问题(可能与Java11有关),其他版本未发现相似问题。

  • 首先去产品的plugins下找到任意cdt插件,复制文件名中时间戳部分
    在这里插入图片描述
  • 手动导出工作空间中的所有cdt相关插件,注意时间戳改为刚才复制的时间戳
    在这里插入图片描述
  • 拷贝手动导出的cdt插件,全部粘贴覆盖到产品的plugins目录下即可

找不到gcc、gdb、make等工具链

出现这种问题,一般是环境变量的问题。如果系统环境变量未生效,可到Window->Preferences手动进行设置
在这里插入图片描述

参考资料


  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要创建一个C++控制流图,可以使用Graphviz这个流程图和结构图的自动化绘图工具。Graphviz提供了一些命令行工具和API,可以在各种环境下使用,包括Windows、Mac和Linux等操作系统。 以下是使用CDT和Graphviz创建C++控制流图的步骤: 1.安装Graphviz Graphviz可以从官方网站下载安装包,也可以在Linux系统上使用包管理器进行安装。安装完成后,将Graphviz的bin目录添加到系统环境变量中。 2.在CDT中创建C++项目 在CDT中创建一个C++项目,或者打开一个已有的C++项目。 3.生成AST(抽象语法树) 在CDT中,可以通过右键单击项目或源文件并选择“Index”->“Rebuild”生成AST。AST将生成C++代码的抽象语法树,可以用于生成控制流图。 4.生成DOT文件 使用AST生成DOT文件,DOT是Graphviz使用的一种文本格式。可以使用CDT的ASTView插件来生成DOT文件。在CDT中,选择“Window”->“Show View”->“Other”打开“ASTView”,右键单击抽象语法树并选择“Export”->“DOT File”,保存生成的DOT文件。 5.生成控制流图 使用Graphviz的命令行工具dot生成控制流图。在命令行中,使用以下命令: ``` dot -Tpng input.dot -o output.png ``` 其中,input.dot是生成的DOT文件名,output.png是控制流图的输出文件名。 这样,就可以得到一个C++控制流图。可以使用Graphviz的其他工具和API进一步定制和优化控制流图的生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值