使用vscode开发ns3项目(代码高亮、自动补全支持)

需求

需要复现一篇网络体系结构相关的论文。论文使用了ns3模拟,因此需要实现相应的ns3代码。

相关工具和前期准备

  1. ns3模拟框架:ns3是进行网络模拟最常用的模拟框架。其在2008年发布了第一个版本,之后以每年2-3个版本的速度一直更新到现在,最新的版本是2019年的ns3-3.30。其最新的版本主要支持C++开发,大多数功能也提供了python接口。不过其只支持Linux系统。
    ns3官网
  2. vscode、ubuntu、vmware:比较常见,此处不再介绍,如有需要可查阅官网和其他相关博客。
  3. 本文将从已经安装好vmware(作者使用版本为VmWare 15 Pro,具体版本为15.5.2),ubuntu(作者使用版本为Ubuntu 18.04.01),ns3(作者使用版本为ns3-3.30.1),vscode(作者使用版本为1.45.1)的前提条件下继续。注意ns3和vscode都是安装在vmware中的ubuntu虚拟机上。

问题

在ns-3-tutorial中,ns3的开发者极尽详至的为我们介绍了ns3的用法。然而,在开发者看来,具体的IDE不应该出现在对ns3的介绍中,所以在tutorial中开发者一直使用在终端中输入命令./waf./war --run的方式来编译和运行项目,对于代码文件的更改也只是称“使用你喜欢的IDE将代码修改为”。虽然说理论上我们可以通过vim和终端命令完成所需要的所有代码编辑功能,但是作为2020年的程序员,我们希望有IDE。

  1. CodeBlock是很多Linux程序员喜欢的IDE,然而在我花了半个小时仍没有找到如何直接打开一个文件夹的功能后,我放弃了它。
  2. eclipse的C++支持也是一个非常经典的IDE,ns3的官网wiki上也有相关配置的介绍https://www.nsnam.org/wiki/HOWTO_configure_Eclipse_with_ns-3,但是当我看到那超过二十步的繁琐配置时,我失去了尝试这种方法的动力。除此之外,eclipse已经是十年前热门的IDE了,人总是喜欢用新一些的东西。
  3. 关于ns3在windows和visual studio的支持,我也找到了官方wiki——https://www.nsnam.org/wiki/Ns-3_on_Visual_Studio,发现这是一项还在进行中的工作,而且现在还在四个阶段中的第一个阶段。其实我并不排斥使用终端命令去进行编译和运行,我最迫切需要的只是代码高亮和自动补全。

简单的需求一般都会有简单的方法去实现,这次也不例外。

解决方法

在youtube上找到了使用vscode进行配置,从而编写ns3程序的教程,链接如下。
ns3 Network Simulator - Configuring Visual Studio Code for Auto-Completion & Syntax Highlighting
该视频解决了我的所有需求。
大致步骤为:

  1. 安装vscode,安装C/C++扩展。
  2. 进入相关目录,通过code .命令(注意那个".")使用vscode打开当前目录。
  3. 按下ctrl+shift+c,在弹出菜单中找到相关设置进入设置。
    使用vscode开发ns3项目(代码高亮、自动补全支持)_第1张图片
  4. 按照视频教程中所述进行修改。
    使用vscode开发ns3项目(代码高亮、自动补全支持)_第2张图片
    此处和视频中略有不同,视频中的includePath有两个值,作者称只使用第一个值(即上面图片中的值)的效果令他不是很满意。但是第二个值似乎跟ns3对eclipse的扩展有关。我在尝试了一下只使用一个值的效果后感觉已经很不错,因此便没有再去钻研第二个值的具体含义及效果。
  5. 之后编辑代码,就会有类似于使用visual studio写C系代码的顺滑体验。当然现在的编译运行还是需要在命令行中输入命令。

结果

见视频。此处略。

其他

ns3其实感觉在设计上还有些可以完善的地方,比如有很多地方要使用set(属性名字符串,值字符串)的方法设置一些属性,是否可以将不同的属性字符串直接变为方法呢?这样就可以更好的使用IDE的自动补全功能。
另外,通过ns3,我偶然间发现了Google Summer of Code项目。可惜发现时已经截止报名了。但是看介绍时我感觉真的应该参加一次,我觉得它将会是一个难忘的经历。因此我在这里放一下网址,如果读者有兴趣可以了解一下。https://summerofcode.withgoogle.com/

你可能感兴趣的:(学生,ns3,网络模拟)