使用较短的一个交换unix编译器标志

时间:2013-04-20 09:18:00

标签: linux unix gcc compilation flags

我在linux上运行ns3总结,每次编译我都要输入

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

#!/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

答案 1 :(得分:1)

GCC编译器支持@表示法在文件中嵌入一系列参数。阅读GCC overall options页面附近的结尾。

所以你可以在文件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处理它等其他编译器并不理解@选项。