Как добавить значок в исполняемый файл mingw-gcc?

В Windows, используя mingw gcc, есть все равно, чтобы указать, что выходной exe файл должен взять файл значка, чтобы файл exe показывался с этим значком в проводнике?

Ответ 1

Вам нужно сначала создать иконку. Затем вам нужно создать RC файл, который выглядит примерно так:

id ICON "path/to/my.ico"

Идентификатор может в значительной степени все, что угодно. Это не имеет значения, если вы не хотите ссылаться на это в своем коде. Затем запустите windres следующим образом:

windres my.rc -O coff -o my.res

Затем вы просто включаете my.res вместе с вашими объектными файлами при ссылке, например:

g++ -o my_app obj1.o obj2.o my.res

И это должно быть все, что нужно сделать.


И, без дополнительной оплаты, если вы хотите включить информацию о версии в свое приложение, добавьте следующий шаблон в файл .rc и внесите соответствующие изменения:

1 VERSIONINFO
FILEVERSION     1,0,0,0
PRODUCTVERSION  1,0,0,0
BEGIN
  BLOCK "StringFileInfo"
  BEGIN
    BLOCK "080904E4"
    BEGIN
      VALUE "CompanyName", "My Company Name"
      VALUE "FileDescription", "My excellent application"
      VALUE "FileVersion", "1.0"
      VALUE "InternalName", "my_app"
      VALUE "LegalCopyright", "My Name"
      VALUE "OriginalFilename", "my_app.exe"
      VALUE "ProductName", "My App"
      VALUE "ProductVersion", "1.0"
    END
  END
  BLOCK "VarFileInfo"
  BEGIN
    VALUE "Translation", 0x809, 1252
  END
END

Обратите внимание, что langID предназначен для английского языка в Великобритании (это наиболее близкая к Австралии локализация, которую я мог бы определить). Если вы хотите использовать "английский" для США, измените строку BLOCK на:

BLOCK "040904E4"

и перевод строки для:

VALUE "Translation", 0x409, 1252

См. VERSIONINFO ресурс для информации.

Ответ 2

В файле RC имяID не обязательно должно быть именем, оно может быть просто целое число. Имя файла должно указываться только в том случае, если оно содержит пробел. Вместо из:

windres my.rc -O coff -o my.res

Вы можете использовать:

windres my.rc my.o