带有命令行参数的 C++ 的 Makefile 和 Bash 脚本
Posted
技术标签:
【中文标题】带有命令行参数的 C++ 的 Makefile 和 Bash 脚本【英文标题】:Makefile and Bash script for C++ with command line arguments 【发布时间】:2016-06-07 08:55:17 【问题描述】:对于我的家庭作业,我刚刚编写了一个 c++ 程序,当你运行它时应该提供一个命令行参数(例如-l
)。现在,我需要在 Unix 中编译和运行我的程序。所以,我需要一个 makefile 和一个 bash 脚本(名称是 cddb
)来调用我的程序。
我的问题是两个文件的顺序。要求就像我应该输入cddb -l
来运行程序。那么,是不是我应该编写一个调用makefile并将参数传递给makefile的bash脚本。然后makefile取参数并编译运行我的cpp文件?
【问题讨论】:
makefile 告诉make
如何构建你的程序,就是这样。然后,您只需像运行任何其他命令或程序一样运行您的程序。例如。如果您的程序可执行文件在当前目录中,则执行./cddb -l
。不需要 shell 脚本。
我不明白你为什么需要一个 bash 脚本。只需在 makefile 中执行所有操作(有一个目标 run:
左右)。
我不明白您为什么需要 makefile 或 bash 脚本。家庭作业程序很少复杂到需要生成文件,而且您不需要 bash 脚本来运行程序。
听起来您需要要么 bash 脚本 或 Makefile 来构建程序。初学者经常将编译命令放入 bash 脚本中,然后学习如何构建 Makefile。只需将用于构建程序的任何命令放入名为“build.sh”之类的文本文件中并使其可执行(chmod u+x build.sh
),然后使用它来构建程序。 ./build.sh
或者构建并执行; g++ cddb.cpp -o cddb; ./cddb -l
。如果您愿意,编写包含相同命令的 Makefile
显然并不难,但如果您总是想按顺序运行它们,那么您只需要在 Bash 历史记录中包含它。
【参考方案1】:
命令行参数的想法是在运行时更改可执行文件的行为,因此如果您想要稍微不同的行为,则无需重新编译源代码。
只需像./cddb -l
一样调用您的程序并解析源代码中的命令行参数。要解析参数,您可以使用在主函数签名中声明的 argv 和 argc 变量。
【讨论】:
以上是关于带有命令行参数的 C++ 的 Makefile 和 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章