Bash

當我執行 Make ‘filename’ 時,如何將預設參數更改為 gcc

  • March 22, 2014

如果我將其發佈在錯誤的堆棧中,請原諒我。每次我為目錄中沒有任何 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如果您缺少某個工具,Makefilemake工具將嘗試使用 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

參考

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