a.exeの代わりに常にコードファイル名で出力するようにgccを設定できますか?

a.exeの代わりに常にコードファイル名で出力するようにgccを設定できますか?

デフォルトでは、実行時にgcc test.cgccは実行可能ファイルをa.exe.gccから生成できるようにグローバルにオーバーライドする方法はありますかtest.exe

これは、入力ファイルが1つしかないと仮定します。それ以外の場合、gccはa.exeまたは最初のファイル名を使用することを選択できます。

ベストアンサー1

これは通常、 makefile ルールによって行われます。たとえばtest.c、与えられた場合でもこれを行うことができます。いいえメイクファイルがあります):

make test

同様に、g ++にもtest2.cc同じことができるという前提のもとに、事前定義された規則があります。

make test2

ただし、どちらの場合もライブラリが必要になります。これにはmakefileの利点があります(複数のオブジェクトをコンパイルする方法を提供することに加えて)。

gcc自体には、makefileルールをエミュレートするオプションはありません。これを実行できるツールが必要な場合は、上記の特別なケースを実行するシェルスクリプトを作成できます。

#!/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。一方、あなたはできるスクリプトを変更して必要なライブラリを追加し、1つの場所でこれを実行します(問題のように見えるmakefileセットの代わりに)。

注:gccが自動的に「.exe」サフィックスを提供するかどうか(そうでない場合)は、プラットフォームとコンパイラの設定によって異なります。このサフィックスはUnixファミリープラットフォームでは有用ではなく、通常Cygwinなどの関連プラットフォームではオプションです。

おすすめ記事