104 votes

Comment ajouter une icône à un exécutable compilé par mingw-gcc ?

Sous Windows, en utilisant le gcc de mingw, est-il possible de spécifier que le fichier exe de sortie doit prendre un fichier icône, afin que le fichier exe s'affiche avec cette icône dans l'explorateur ?

214voto

Evan Points 9261

Vous devez d'abord créer l'icône. Ensuite, vous devez créer un fichier RC avec le contenu ci-dessous. Ici, nous allons le nommer comme my.rc .

id ICON "path/to/my.ico"

En id mentionné dans la commande ci-dessus peut être à peu près n'importe quoi. Cela n'a pas d'importance, sauf si vous voulez y faire référence dans votre code. Ensuite, exécutez windres comme suit :

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

Ensuite, lors de la construction de l'exécutable, avec d'autres fichiers objets et fichiers ressources, incluez my.res que nous avons obtenu à l'étape précédente, par exemple :

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

Et ça devrait être tout ce qu'il y a à faire.


Et, sans frais supplémentaires, si vous souhaitez inclure les informations relatives à la version dans vos ajoutez le modèle suivant dans un nouveau fichier de type .rc et suivez les étapes mentionnées ci-dessus.

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

Notez que le langID est pour l'anglais du Royaume-Uni (qui est la localisation la plus proche de l'Australie que j'ai pu identifier). Australie que j'ai pu identifier). Si vous voulez de l'"anglais" américain, changez l'attribut BLOCK ligne à :

BLOCK "040904E4"

et la ligne de traduction à :

VALUE "Translation", 0x409, 1252

Véase Ressource VERSIONINFO pour plus d'informations.

6voto

Steven Penny Points 18523

Dans le fichier RC, le nameID ne doit même pas être un nom, il peut simplement être un nombre entier. Le site nom de fichier ne doit être cité que s'il contient un espace. Au lieu de de :

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

Vous pouvez utiliser :

windres my.rc my.o

3voto

noabody Points 101

Essayez Resource Hacker. J'ai pu faire une compilation croisée de mon projet sous Linux (WSL) et générer une icône à partir du logo de la page d'accueil. J'avais juste besoin d'un moyen simple de l'intégrer dans l'exe et ce programme a très bien fonctionné. Resource Hacker par Angus Johnson

-1voto

M. Utku ALTINKAYA Points 1549

Utiliser windres pour compiler vos ressources, et les ajouter à votre exécutable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X