带有命令行参数的 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 一样调用您的程序并解析源代码中的命令行参数。要解析参数,您可以使用在主函数签名中声明的 argvargc 变量。

【讨论】:

以上是关于带有命令行参数的 C++ 的 Makefile 和 Bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

vs2010 怎么给c++项目预设命令行参数

将命令行参数添加到 Makefile [重复]

Makefile 命令行参数与 MinGW 目录路径混淆

如何从命令行传递参数到Makefile?

在linux系统应用make命令时,makefile 与makefile有何区别

用于 c++ 的 Makefile,带有一个 .o 文件和一个 .CPP 文件