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

基于CDT源码制作一个最基本的C开发环境

  • 前言
  • 一、环境说明
  • 二、导入工程
    • 导入工程
    • 解决依赖
      • 定义Target Platform配置
      • 编译工程
  • 三、集成插件
    • 新建feature
      • Overview 页
      • Include Plug-ins 页
      • Dependencies 页
    • 添加feature
  • 四、导出产品
  • 五、成果展示
    • 设置gcc环境变量
    • 运行
      • 新建一个C工程
      • 编译调试
  • 六、总结
    • 出错解决
      • 导出后启动正常,新建工程时出错
      • 找不到gcc、gdb、make等工具链
    • 参考资料

前言

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


一、环境说明

  • 本例程基于《导出Eclipse产品》一文中描述的开发环境和源码示例展开
  • org.eclipse.cdt 源码仓库 ,本文基于cdt_10_5 分支
  • 下载一种gcc环境,本文以mingw64为例(linux下使用gcc即可)

二、导入工程

导入工程

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配置文件。加入如下配置,保存



<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中
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第1张图片

编译工程

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


三、集成插件

新建feature

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

Overview 页

【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第2张图片

Include Plug-ins 页

包含如下插件
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第3张图片

Dependencies 页

点击Compute按钮即可
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第4张图片

添加feature

将新建的feature添加到 com.owner.xstudio.platform/xstudio.product 中即可
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第5张图片


四、导出产品

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


五、成果展示

设置gcc环境变量

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

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

运行

新建一个C工程

如果新建工程出错,参考出错解决
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第6张图片

编译调试

如果找不到工具链,参考出错解决
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第7张图片


六、总结

出错解决

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

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

  • 首先去产品的plugins下找到任意cdt插件,复制文件名中时间戳部分
    【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第8张图片
  • 手动导出工作空间中的所有cdt相关插件,注意时间戳改为刚才复制的时间戳
    【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第9张图片
  • 拷贝手动导出的cdt插件,全部粘贴覆盖到产品的plugins目录下即可

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

出现这种问题,一般是环境变量的问题。如果系统环境变量未生效,可到Window->Preferences手动进行设置
【CDT扩展篇一】基于CDT源码制作一个最基本的C开发环境_第10张图片

参考资料

  • 本案例源码下载
  • 插件依赖,请参阅《关于插件依赖问题的解决办法和技巧》
  • Target Platform,请参阅《啥是Target Platform》

你可能感兴趣的:(Eclipse插件开发,C/C++,c语言,CDT,Eclipse插件开发)