En Windows, usando gcc de mingw, ¿hay alguna forma de especificar que el archivo exe de salida debe tomar un archivo de icono, de modo que el archivo exe se muestre con ese icono en el explorador?
Primero debes crear el ícono. Luego, debe crear un archivo RC con el contenido a continuación. Aquí lo nombraremos como my.rc.
id ICON "path/to/my.ico"
Lo idmencionado en el comando anterior puede ser prácticamente cualquier cosa. No importa a menos que quieras hacer referencia a él en tu código. Luego ejecute windres de la siguiente manera:
windres my.rc -O coff -o my.res
Luego, mientras compila el ejecutable, junto con otros archivos de objetos y archivos de recursos, incluya los my.resque obtuvimos en el paso anterior. p.ej:
g++ -o my_app obj1.o obj2.o res1.res my.res
Y eso debería ser todo lo que hay que hacer.
Y, sin cargo adicional, si desea incluir información de la versión en su aplicación, agregue el siguiente texto estándar a un nuevo .rcarchivo y siga los pasos mencionados anteriormente.
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
Tenga en cuenta que langID es para inglés del Reino Unido (que es la localización más cercana a Australia que pude identificar). Si desea "inglés" de EE. UU., Cambie la BLOCK
línea a:
BLOCK "040904E4"
y la línea de traducción a:
VALUE "Translation", 0x409, 1252
Consulte el recurso VERSIONINFO para obtener información.
VALUE "Translation", 0x409, 1252, 0x809, 1252habilitaría tanto el inglés de EE. UU. como el del Reino Unido de acuerdo con msdn.microsoft.com/en-us/ biblioteca / aa381058.aspx . Esto también le indica que puede incluir más de un 'BLOQUE "lang04E4"'IconsExtractpara incrustar un ícono en elexeque necesitaba.En el archivo RC, el nameID ni siquiera tiene que ser un nombre, solo puede ser un número entero. El nombre del archivo debe citarse solo si contiene un espacio. En vez de:
Puedes usar:
Recurso ICON
página de manual de windres
Ejemplo
fuente
my.ocon MinGWg++despuéswindres my.rc my.o(algúnWinMainmensaje de error relacionado), pero lawindres my.rc -O coff -o my.resruta funcionó bien..o(= COFF automáticamente; lo nombro comomy.res.opara mayor claridad) funciona para mí. En realidad, los.resarchivos producidos por MSVC tienen un formato diferente, por lo que parece ser extraño / incompatible con COFF en.resPrueba Resource Hacker. Pude realizar una compilación cruzada de mi proyecto en Linux (WSL) y generar un icono a partir del logotipo de la página de inicio. Solo necesitaba una forma sencilla de incrustarlo en el exe y este programa funcionó muy bien. Hacker de recursos de Angus Johnson
fuente