Gcc
我可以將 gcc 配置為始終輸出到程式碼文件的名稱而不是 a.exe 嗎?
預設情況下,執行時
gcc test.c
,gcc 會將執行檔輸出為a.exe
. 有沒有辦法全域覆蓋它以便 gcc 將創建test.exe
?這假設只有一個輸入文件 - 否則 gcc 可以選擇使用 a.exe,或者可能使用第一個文件的名稱。
這通常通過 makefile 規則完成,例如,如果給定
test.c
,您將能夠做到這一點(即使沒有makefile):make test
同樣,g++ 也有預定義的規則,給定
test2.cc
,你可以做同樣的事情:make test2
但無論哪種情況,您都可能需要庫。這樣做是 makefile 的優點(除了提供編譯多個對象的方法)。
gcc 本身沒有模擬 makefile 規則的選項。如果你想要一個可以做到這一點的工具,你可以製作一個 shell 腳本來處理提到的特殊情況,例如,
#!/bin/sh for name in "$@" do case "$name" in *.c) gcc -o $(basename "$name") "$name" ;; *.cc) g++ -o $(basename "$name") "$name" ;; *) echo "ignoring $name, since it is not one of my files!" ;; esac done
但是(請參閱答案的開頭),該腳本僅明確了預定義規則為
make
您提供的功能。另一方面,您可以修改腳本以添加必要的庫,並在一個地方執行此操作(而不是一組 makefile,這似乎是問題所在)。順便說一句:gcc 是否自動提供“.exe”後綴(如果不提供)取決於平台和編譯器配置。後綴在類 Unix 平台上沒有用,在 Cygwin 等相關事物上通常是可選的。