Shell
我如何編寫一個 shell 腳本,以便在我編譯我的 c++ 程序時它將二進製文件放入二進制目錄
我有一個名為的目錄
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 腳本做更高級的事情(例如,讓它確定要編譯的程序列表,而不是列出所有程序),但這有點複雜。