Как написать сценарий оболочки, чтобы при компиляции моей программы на C ++ он поместил двоичный код в двоичный каталог

У меня есть каталог под названием Binary и множество исходных файлов:

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

когда я компилирую исходный код

 g++ lesson01.cpp -o lesson01 

Я хочу, чтобы lesson01 был помещен в Binary/

Сценарии оболочки очень похожи на команды, которые вы вводите интерактивно в оболочку. В этом случае опция -o указывает g++ где нужно поместить двоичный файл. Поэтому вы просто скажите, что вы хотите его в двоичном каталоге:

 g++ lesson01.cpp -o Binary/lesson01 

Вы можете запустить это в интерактивном режиме (введя его в оболочку), или вы можете поместить его в сценарий оболочки – оба будут делать то же самое:

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

Обычно, однако, вы должны использовать Makefile для выполнения таких действий, как сценарий оболочки.

 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-скрипта (например, чтобы он определял список программ для компиляции, вместо того, чтобы перечислять их все), но это довольно сложно.