Могу ли я настроить gcc для вывода на имя файла кода вместо a.exe?

По умолчанию при запуске gcc test.c gcc выведет исполняемый файл как a.exe . Есть ли способ глобально переопределить это, чтобы gcc создавал test.exe ?

Это предполагает, что есть только один входной файл – иначе gcc может выбрать использование a.exe или, возможно, использовать имя первого файла.

Обычно это делается с правилами makefile, например, с учетом test.c , вы могли бы это сделать (даже без make-файла):

 make test 

Аналогично, существуют предопределенные правила для g ++, учитывая test2.cc , вы можете сделать то же самое:

 make test2 

Но в любом случае вам, вероятно, нужны библиотеки. Это то, что делают make-файлы полезными (в дополнение к предоставлению способов компиляции нескольких объектов).

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 . С другой стороны, вы можете изменить скрипт для добавления необходимых библиотек и сделать это в одном месте (а не в наборе make-файлов, что, похоже, является проблемой).

Кстати: gcc автоматически предоставляет суффикс «.exe» (если нет) зависит от платформы и конфигурации компилятора. Суффикс не полезен на Unix-подобных платформах и, как правило, необязателен для подобных вещей, таких как Cygwin.