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

标签 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

谢谢

最佳答案

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 处理它。

关于linux - 用一个较短的交换 unix 编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118646/

相关文章:

c - Unix 编程共享内存奇怪的结果

c++ - C/C++标准库中的缓冲

c++ - GCC对尖括号的实现包括。为什么必须如下所述?

c++ - 防止 GCC 对结构 union 中的位域重新排序

linux - 如何在Linux中从DSN获取数据库详细信息?

linux - 在 Linux 64 位中处理命令行

unix - 如何监控来自 Unix 和 Sendmail 的外发电子邮件?

c++ - 使用 map 类型创建 gcc 错误 : expected unqualified-id before ‘for’

linux - BASH:检查目录中的文件是否重复?

Linux "file"命令的 Python 模拟