我如何编写一个 shell 脚本,以便在编译我的 c++ 程序时它将二进制文件放入二进制目录中

我如何编写一个 shell 脚本,以便在编译我的 c++ 程序时它将二进制文件放入二进制目录中

我有一个名为的目录Binary和一堆源文件:

./
├── Binary/
├── lesson02.cpp
├── lesson04.cpp
└── lesson06.cpp

当我编译源代码时

g++ lesson01.cpp -o lesson01

我想lesson01被安置在Binary/

答案1

Shell 脚本与您在 shell 中交互键入的命令非常相似。在本例中,该-o选项指示g++将二进制文件放在哪里。所以你只需告诉它你想要它在二进制目录中:

g++ lesson01.cpp -o Binary/lesson01

您可以交互地运行它(通过将其输入到 shell 中),也可以将其放入 shell 脚本中 - 两者都会执行相同的操作:

#!/bin/sh
g++ lesson01.cpp -o Binary/lesson01

然而,通常情况下,您会使用 Makefile 来执行此类操作,而不是 shell 脚本。

all:

Binary/%: %.cpp
    g++ -o "$@" "$<"  # Note: this must be a tab, not spaces. Make is annoying like that

然后您键入make Binary/lesson01,Make 将编译该程序(如果源代码比现有二进制文件更新,或者二进制文件不存在)。您还可以在all:顶部列出之后的所有程序(all: Binary/lesson01 Binary/lesson02等),然后只需键入make即可根据需要编译所有程序。

您还可以使用 Make 或 shell 脚本执行更高级的操作(例如,让它确定要编译的程序列表,而不是列出所有程序),但这要复杂一些。

相关内容