ns3.36以后的版本中_ns3命令的原理_CMAKE的使用以及一些例子

本文主要来自于ns3的官方文档:4.3. Working with CMake — Manual,不过只包含以下部分:

4.3. 使用CMake
4.3.1. 配置项目
4.3.1.1. 使用ns3配置项目
4.3.1.2. 使用CMake配置项目
4.3.2. 手动刷新CMake缓存
4.3.3. 建设项目
4.3.3.1. 使用ns3构建项目
4.3.3.2. 使用CMake构建项目
 

4.3. 使用CMake


ns-3项目过去使用Waf构建系统,但在ns-3.36版本中已转移到CMake。
CMake非常冗长,对于基本操作来说,命令可能非常长。
包装器脚本ns3对CMake隐藏了大部分详细信息,并为命令行用户提供了一个类似Waf的界面。
这是建议使用ns-3的方法,除非您使用的IDE支持可以使用CMake或CMake项目生成的项目。

4.3.1. 配置项目

在获得代码后,无论是克隆ns-3-dev存储库还是下载发布tarball,您都需要配置项目来处理它。
有两种方法可以配置项目:最简单的方法是使用ns3脚本,另一种方法是直接使用CMake。

4.3.1.1. 使用ns3配置项目

导航到ns-3-dev目录,然后运行/ns3 configure--打印配置选项的帮助,要在发布模式下配置ns-3,同时启用示例和测试,请运行./ns3 configure -d release --enable-examples --enable-tests。要检查哪些底层命令执行,请添加--dry-run选项:

~/ns-3-dev$ ./ns3 --dry-run configure -d release --enable-examples --enable-tests
The following commands would be executed:
mkdir cmake-cache
cd cmake-cache; /usr/bin/cmake -DCMAKE_BUILD_TYPE=release -DNS3_NATIVE_OPTIMIZATIONS=OFF -DNS3_EXAMPLES=ON -DNS3_TESTS=ON -G Unix Makefiles .. ; cd ..

去掉dry run就可以正常configure了。

4.3.1.2. 使用CMake配置项目

进入ns-3-dev目录,创建一个CMake缓存文件夹,导航到该文件夹,然后运行指向ns-3-dev文件夹的CMake。

~$ cd ns-3-dev
~/ns-3-dev$ mkdir cmake-cache
~/ns-3-dev$ cd cmake-cache
~/ns-3-dev/cmake-cache$ cmake ..

可以向CMake命令传递额外的参数来配置它。要更改变量值,您应该使用后面跟着变量名的-D选项。
例如,构建类型存储在名为CMAKE_build_type的变量中。将其设置为下表中所示的CMake构建类型之一将更改与这些构建类型相关的编译器设置,并输出可执行文件和库名称,这些名称将接收后缀。

可以使用以下命令设置构建类型,该命令假定您的终端位于之前创建的缓存文件夹中。

~/ns-3-dev/cmake-cache$ cmake -DCMAKE_BUILD_TYPE=DEBUG ..

另一个常见的更改选项是生成器,它是CMake调用的真正的底层构建系统。CMake支持许多生成器,包括下表中列出的生成器。

要更改生成器,您需要传递其中一个带有-G选项的生成器。例如,如果我们更喜欢Ninja而不是默认的Makefiles,我们需要运行以下命令:

~/ns-3-dev/cmake-cache$ cmake -G Ninja ..

如果同一CMake缓存文件夹中存在不同的生成器文件,则此命令可能会失败。建议清理CMake缓存文件夹,然后重新创建它,并在第一次运行时重新配置生成器设置。

~/ns-3-dev/cmake-cache$ cd ..
~/ns-3-dev$ rm -R cmake-cache && mkdir cmake-cache && cd cmake-cache
~/ns-3-dev/cmake-cache$ cmake -DCMAKE_BUILD_TYPE=release -G Ninja ..

第一次配置后,设置将初始化为默认值,然后您可以使用ccmake命令手动更改它们,移动光标并设置所需值后,键入c以配置CMake。
如果您喜欢使用非交互式命令执行所有操作,请查看ns-3-dev目录中的主CMakeLists.txt文件。它包含大多数选项标志及其默认值。要启用示例和测试,请运行:

~/ns-3-dev/cmake-cache$ cmake -DNS3_EXAMPLES=ON -DNS3_TESTS=ON ..

4.3.2. 手动刷新CMake缓存

配置项目后,调用CMake将刷新CMake缓存。需要刷新才能发现新目标:自上次运行以来创建的库、可执行文件和/或模块。
刷新是通过从CMake缓存文件夹运行CMake命令来完成的。

~/ns-3-dev/cmake-cache$ cmake ..

CMakeCache.txt中存储的先前设置将被保留,同时将扫描新模块并添加目标。
还可以使用ns3包装器脚本刷新缓存:

~/ns-3-dev$ ./ns3 configure

4.3.3. build项目

构建项目有三种方式:使用ns3脚本、调用CMake和直接调用底层构建系统(例如Ninja)。最后一种方法被省略了,因为每个底层构建系统都有自己独特的命令行语法。

4.3.3.1. 使用ns3构建项目

ns3包装器脚本使命令行用户的生活更轻松,可以接受不带lib前缀的模块名称和不带scratch_前缀的scratch文件。以下命令可用于构建整个项目:

~/ns-3-dev$ ./ns3 build

要生成特定目标,请运行:

~/ns-3-dev$ ./ns3 build target_name

其中target_name是有效的目标名称。模块库的前缀是lib(例如libcore),scratch文件夹中的可执行文件的前缀是scratch_(例如scratch_scratch-simulator)。可执行文件目标的源文件名不带“.cc”前缀(例如sample-simulator.cc=>sample simulator)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824081.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则:洪特规则。 洪特规则是德国人弗里德里希洪特(F.Hund)根据大量光谱实验数据总结出的一个规律,它指出电子分布到能量简并的原子轨道时,优先以自旋相同的方式分别占…

企业网站制作如何被百度收录

1、网站在百度中的整体评分 说俗点就是网站的权重,在优化过程中我们会见到很多网站出现秒收的情况,发布的文章几分钟就可以收录,这个通过SITE语法都可以去查询,那么这跟自己的网站权重以及内容更新习惯是有非常重要的关联。 我们…

【函数式接口使用✈️✈️】通过具体的例子实现函数结合策略模式的使用

目录 前言 一、核心函数式接口 1. Consumer 2. Supplier 3. Function,> 二、场景模拟 1.面向对象设计 2. 策略接口实现(以 Function 接口作为策略) 三、对比 前言 在 Java 8 中引入了Stream API 新特性,这使得函数式编程风格进…

nginx 导致websocket无法连接的解决办法

答:在config配置文件中 map $http_upgrade $connection_upgrade { default upgrade; close; } server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/ssl_certificate.crt; ssl_certificate_key /path/to/…

【IoTDB 线上小课 02】开源增益的大厂研发岗面经

还有友友不知道我们的【IoTDB 视频小课】系列吗? 关于 IoTDB,关于物联网,关于时序数据库,关于开源...给我们 5 分钟,持续学习,干货满满~ 5分钟学会 大厂研发岗面试 之前的第一期小课,我们听了 I…

设计模式|迭代器模式(Iterator)

文章目录 结构优缺点优点缺点使用了迭代器模式的知名框架代码示例在实现迭代器时,需要有什么考虑迭代器模式(Iterator)是一种行为设计模式,它允许在不暴露集合底层表示的情况下,顺序访问一个集合中的元素。这种模式在需要逐个处理集合中的元素,而又不希望暴露其内部结构的…

1.总结串口的发送和接收功能使用到的函数2.总结DMA的作用,和DMA+空闲中断的使用方式3.使用PWM+ADC光敏电阻完成光控灯的实验

1.总结串口的发送和接收功能使用到的函数 串口发送函数:HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) UART_HandleTypeDef *huart:指定要使用的串口 const uint8_t *pData&…

爬虫入门——Request请求

目录 前言 一、Requests是什么? 二、使用步骤 1.引入库 2.请求 3.响应 三.总结 前言 上一篇爬虫我们已经提及到了urllib库的使用,为了方便大家的使用过程,这里为大家介绍新的库来实现请求获取响应的库。 一、Requests是什么&#xff1…

如何确保美国站群服务器的安全性?

选择服务器安全性很重要,那么如何确保美国站群服务器的安全性,rak部落小编为您整理发布如何确保美国站群服务器的安全性。 确保美国站群服务器的安全性,您可以采取以下措施: - **定期更新和升级**:保持服务器操作系统和…

MT2045 斐波那契,但是是字符串

现在有字符串组: 第0项a0​“IAKIOI”; 第1项a1​“WHENWILLSCORLLOFTAIWUCOMEOUT!!!”; 之后的第k项由第k−2项第k−1项构成。 问第n项字符串的第c个字符是什么。 格式 输入格式: 两个整数n,c意义如题 输出格式: …

基于Python大数据的微博舆情分析,微博评论情感分析可视化系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

PCB Editor简单使用

先在OrCAD软件 导出画好的图: 去PCBEditor软件: 画版图框框: 可以手动画也可以代码画,前提是使用line的操作。 命令画 x 0 0 x 1000 0 x 1000 1000 X 0 1000 X 0 0 就可以了 显示格点 修改格点: 导入…

transformer上手(9)—— 翻译任务

运用 Transformers 库来完成翻译任务。翻译是典型的序列到序列 (sequence-to-sequence, Seq2Seq) 任务,即对于每一个输入序列都会输出一个对应的序列。翻译在任务形式上与许多其他任务很接近,例如: 文本摘要 (Summarization):将长…

短视频素材在哪里找?8个视频素材免费网站大全

在当下这个视频内容越发重要的时代,获取多样化且高质量的视频素材对于提升任何视频项目的吸引力至关重要。为了帮助你探索更广阔的创意领域,这里有一系列精选的无水印视频素材网站,它们各具特色,能够为你的创作带来新的视觉体验和…

一文掌握面阵相机

机器视觉应用中常见的面阵工业相机,其应用比较广泛,它主要是采用连续的、面状扫描光线来获取完成的目标图像,并能即使进行图像采集的相机,最终实现产品的检测。 面阵相机分类: 按照芯片类型:CCD相机和CMOS相机。 按…

C++ 并发编程指南(11)原子操作 | 11.5、内存模型

文章目录 一、C 内存模型1、为什么需要内存模型? 前言 C 11标准中最重要的特性之一,是大多数程序员都不会关注的东西。它并不是新的语法特性,也不是新的类库功能,而是新的多线程感知内存模型。本文介绍的内存模型是指多线程编程方…

专精特新专项指标

专项指标(至少具备一条) 1.化:企业坚持化发展战略,从事特定细分市场时间达到2年以上,专注核心业务,主营业务收入占本企业营业收入的70%以上,具有较高化生产、服务和协作配套能力,能…

如何给自己的网站做HTTPS证书

如何给自己的网站做HTTPS证书 原文地址:https://letscrypt.org/ 1. 通过 SSH 连接到服务器 以具有 sudo 权限的用户身份通过​​ SSH 连接到运行 HTTP 网站的服务器。 2.安装snapd 您需要安装 snapd 并确保按照说明进行操作以启用经典快照支持。 按照 snapcraft…

TLS v1.3 导致JetBrains IDE jdk.internal.net.http.common CPU占用高

开发环境 GoLand版本:2022.3.4 问题原因 JDK 中的 TLS v1.3 实现引起 解决办法 使用 SOCKS 代理代替HTTP代理 禁用 Space 和 Code With Me 插件 禁用 TLS v1.3,参考:https://stackoverflow.com/questions/54485755/java-11-httpclient-…

【R语言】概率密度图

概率密度图是用来表示连续型数据的分布情况的一种图形化方法。它通过在数据的取值范围内绘制一条曲线来描述数据的分布情况,曲线下的面积代表了在该范围内观察到某一数值的概率。具体来说,对于给定的连续型数据,概率密度图会使用核密度估计&a…