Shell

我如何編寫一個 shell 腳本,以便在我編譯我的 c++ 程序時它將二進製文件放入二進制目錄

  • March 25, 2015

我有一個名為的目錄Binary和一堆源文件:

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

當我編譯原始碼時

g++ lesson01.cpp -o lesson01

我想lesson01被安置在Binary/

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 腳本做更高級的事情(例如,讓它確定要編譯的程序列表,而不是列出所有程序),但這有點複雜。

引用自:https://unix.stackexchange.com/questions/192468