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, de sorte que le fichier exe s'affiche avec cette icône dans l'explorateur?
Vous devez d'abord créer l'icône. Ensuite, vous devez créer un fichier RC qui ressemble à ceci:
id ICON "path/to/my.ico"
L'ID peut à peu près n'importe quoi. Cela n'a pas d'importance, sauf si vous voulez vous y référer dans votre code. Exécutez ensuite windres comme suit:
windres my.rc -O coff -o my.res
Ensuite, vous incluez simplement my.res avec vos fichiers objet lorsque vous liez, par exemple:
g++ -o my_app obj1.o obj2.o my.res
Et cela devrait être tout ce qu'il y a à faire.
Et, sans frais supplémentaires, si vous souhaitez inclure des informations de version dans votre application, ajoutez le passe-partout suivant à votre .rc
fichier et modifiez de manière appropriée:
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
Remarque, le langID est pour l'anglais britannique (qui est la localisation la plus proche de l'Australie que j'ai pu identifier.) Si vous voulez "anglais" américain, changez la ligne BLOCK
en:
BLOCK "040904E4"
et la ligne de traduction vers:
VALUE "Translation", 0x409, 1252
Voir ressource VERSIONINFO pour plus d'informations.
Dans le fichier RC, le nameID n'a même pas besoin d'être un nom, il peut simplement être un entier. Le nom de fichier ne doit être cité que s'il contient un espace. Au lieu de:
windres my.rc -O coff -o my.res
Vous pouvez utiliser:
windres my.rc my.o
Essayez Resource Hacker. J'ai pu croiser la compilation de mon projet sous Linux (WSL) et générer une icône à partir du logo sur 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é. Pirate de ressources par Angus Johnson