0

我一直在 linux 中运行 ns3 sumulations,每次编译时我都必须输入

g++ -Wall -o simulacija simulacija.cc -DNS3_ASSERT_ENABLE -DNS3_LOG_ENABLE `pkg-config --libs --cflags
libns3.16-core-debug libns3.16-network-debug libns3.16-applications-debug libns3.16-internet-debug
libns3.16-point-to-point-debug libns3.16-point-to-point-layout-debug libns3.16-csma-debug
libns3.16-csma-layout-debug libns3.16-topology-read-debug libns3.16-wifi-debug`

有没有办法将标志缩短为例如:

g++ -Wall simulacija.cc -o simulacija -my_params

谢谢

4

2 回答 2

1

您可以创建一个myparams.sh输出参数的 shell 脚本:

#!/bin/sh
echo -n "-DNS3_ASSERT_ENABLE -DNS3_LOG_ENABLE"
pkg-config --libs --cflags libns3.16-core-debug [...]

现在你可以运行

g++ -Wall simulacija.cc -o simulacija `./myparams.sh`

(别忘了chmod +x myparams.sh

于 2013-04-20T09:22:01.587 回答
1

GCC 编译器支持在@文件中嵌入一系列参数的表示法。阅读GCC 整体选项页面的接近尾声。

所以你可以在一些文件params.args中加入以下几行

-Wall
-I /usr/local
-DNS3_ASSERT_ENABLE 
-DNS3_LOG_ENABLE
-O

并调用

g++ @params.args  simulacija.cc -o simulacija

你可以有一个Makefile规则来构建它params.args (例如用pkg-config等......)

实际上,是时候学习如何使用GNU make了。

@请注意,其他一些编译器(如 GCC 处理它)不理解该选项。

于 2013-04-20T10:58:06.857 回答