OMNeT++命令行
使用opp_makemake和Makefiles:
有几个工具可用于管理C/ c++程序的构建。omnet++使用传统的方式,生成文件。编写Makefile通常是一项乏味的任务。然而,omnet++提供了一个可以为用户生成Makefile的工具,从而节省了手工劳动。
opp_makemake可以基于当前目录和(可选的)子目录中的源文件,自动为仿真程序生成Makefile。
强制覆盖现有的Makefile
-f, --force
要构建的仿真可执行文件或库的名称
-o <filename>
指定目录外构建的输出目录树的名称
-O <directory>, --out <directory>
生成一个“深度”的Makefile。深度Makefile将覆盖make目录下的整个源代码树,而不仅仅是该目录下的文件
--deep
使make递归地下降到所有子目录;子目录本身应该包含makefile
-r, --recurse
带-r或–deep:忽略给定的目录
-X <directory>, -X<directory>, --except <directory>
导致make切换到给定目录并调用该目录中的Makefile
-d<subdir>, -d <subdir>, --subdir <subdir>
生成目标文件,但不创建可执行文件或库
-n,--nolink
构建共享库。.so, .dll或.dylib
-s,--make-so-s,--make-so
创建静态库。.a或.lib
-a,--make-lib
将给定的目录添加到c++包含路径中
-I<dir>
在c++编译器中定义给定的符号
-D<name>[=<value>], -D <name>[=v<alue>], --define <name>[=<value>]
将给定目录添加到库路径中
-L<dir>
要链接的附加库
-l<library>
查看完整列表
opp_makmakake -h
指定项目根目录。任何指向项目子树的绝对路径(-I, -L,目标文件名等)都将被转换为相对路径,以便于在不同的目录中编译项目。默认为包含".project”文件
-P directory, --projectdir directory
选择构建模式,“debug”或“release”。默认为“debug”。通过指定“MODE=debug”或“MODE=release”作为额外参数,仍然可以在make命令行上覆盖此设置
-M mode, --mode mode
定义一个makefile变量,即使name=value插入到makefile中
-Kname=value, -K name=value, --makefile-define name=value
编译在dll中使用的c++文件;参见-p选项。i -s(构建共享库)选项暗示了这个。
-S, --fordll
链接在-I目录中找到的所有目标文件,或者将它们添加到创建的库中。淘汰。
-w, --withobjects
将文件追加到Makefile的末尾。makefrag.vc文件(如果存在)被自动添加如果没有给定-i选项的话。如果要从其他文件生成源文件(.ned、.msg或.cc),则此选项非常有用。
-i filename, --includefragment filename
基本运用
假设源文件(*.ned, *.msg, *.cc, *.h)位于单个目录中,可以切换到该目录并输入:
$ opp_makemake
这将创建一个名为Makefile的文件。现在,运行make程序将构建一个仿真可执行文件
$ make
生成的Makefile将包含源文件的名称,因此每次向项目添加新文件或从项目中删除新文件时,都需要重新运行opp_makemake。
要重新生成现有的Makefile,请在命令行中添加-f选项,否则opp_makefake将拒绝覆盖它。
$ opp_makemake -f -o aloha
生成的Makefile支持以下目标:
•all:构建仿真;这也是默认目标。
•clean:删除make进程生成的文件。
Debug和Release构建
opp_makemake生成一个Makefile,它可以创建发布版本和调试版本。默认情况下,它创建发布版本,但是很容易通过在make命令行上定义MODE变量来覆盖此行为
$ make MODE=debug
也可以生成默认为调试构建的Makefile。这可以通过向opp_makemake命令行添加–mode选项来实现。
$ opp_makemake --mode debug
opp_makemake生成一个Makefile,该Makefile在构建过程中只打印最少的信息(只打印编译文件的名称)。要查看Makefile执行的完整编译器命令,请在make命令行中添加V=1参数。
$ make V=1
运行仿真
仿真可以编译为可执行文件或共享库。当构建输出是可执行文件时,可以直接运行它。例如,Fifo示例仿真可以用以下命令运行:
$ ./fifo
编译成共享库的仿真可以使用opp_run程序运行。例如,如果我们将Fifo模拟编译为Linux上的共享库,则构建输出将是libfifo。这个文件可以用下面的命令运行:
$ opp_run -l fifo
-l选项告诉opp_run加载给定的共享库。
用Qtenv构建的仿真程序接受以下命令行选项:
程序打印帮助信息并退出。
-h
使程序以Qtenv开始。(这是默认设置,除非程序没有与Qtenv链接,或者具有比Qtenv优先级更高的另一个自定义环境库。)
-u Qtenv
配置文件的名称。默认值是omnetpp.ini。可给出多个-f开关;这允许您对配置文件进行分区。例如,一个文件可以包含您的常规设置,另一个文件可以包含大多数模块参数,第三个文件可以包含您经常更改的模块参数。-f开关为可选参数,可以省略。
-f filename
加载共享库。Unix上是. so文件,Windows上是.dll文件,Mac OS X上是.dylib文件)。共享库可能包含简单模块和其他任意代码。文件名可以在没有文件扩展名和库名前缀的情况下指定(即foo而不是libfoo.so)。
-l filename
当出现时,覆盖NEDPATH环境变量并设置仿真NED文件的源位置。
-n filepath
选择一个INI配置执行。
-c configname
它与qtenv-default-run= INI文件配置选项具有相同的效果(但优先级高)。运行过滤器也是可以接受的。如果有多个匹配运行,则将它们分组到组合框的顶部。
-r runnumber