Bash
當我執行 Make ‘filename’ 時,如何將預設參數更改為 gcc
如果我將其發佈在錯誤的堆棧中,請原諒我。每次我為目錄中沒有任何 Makefile 的文件執行 make 時,make 仍然可以工作並編譯原始碼,但只能使用參數:
gcc filename.c -o filename
例如,如果我
make test
在目錄中輸入 test.c ,它會:gcc test.c -o test
我希望改變這一點,這樣每當我在沒有 Makefile 的情況下執行 make 時,它會改為:
gcc -ggdb -std=c99 -Wall -Werror -o filename filename.c -lcs50 -lm
我還認為,無論我重新啟動或更改目錄,此更改都將成為永久性更改並且不會更改。
我目前正在 AMD 64 位處理器上執行 Crunchbang Weezy。
你想要
CFLAGS
環境變數。例如:
$ export CFLAGS='-ggdb3' $ make test cc -ggdb3 test.c -o test
通常,當您鍵入時,
make test
如果您缺少某個工具,Makefile
該make
工具將嘗試使用 vanilla 編譯命令。例子
假設我們有以下內容
test.c
:$ cat test.c #include <stdio.h> int main() { printf( "I am alive! Beware.\n" ); return 0; }
如果沒有
Makefile
當我們執行時,make test
我們會得到以下行為:$ make test cc test.c -o test
**注意:**後續執行將導致:
$ make test make: `test' is up to date.
試執行:
$ ./test I am alive! Beware.
如果你正在輸入 make test 你必須有一個
Makefile
地方。當我在沒有 a 的目錄中執行該命令時,Makefile
我得到以下資訊:$ make test make: *** No rule to make target `test'. Stop.
使用 CFLAGS
如果要覆蓋
make
的預設命令行選項,可以執行以下操作:$ export CFLAGS="-ggdb -std=c99 -Wall -Werror -lcs50 -lm"
現在當我們執行時
make
:$ make test cc -ggdb -std=c99 -Wall -Werror -lcs50 -lm test.c -o test
參考