我有一个名为的目录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 脚本执行更高级的操作(例如,让它确定要编译的程序列表,而不是列出所有程序),但这要复杂一些。