我在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
谢谢
答案 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处理它等其他编译器并不理解@
选项。