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 id
mencionado 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.res
que 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 .rc
archivo 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, 1252
habilitarí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"'IconsExtract
para incrustar un ícono en elexe
que 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.o
con MinGWg++
despuéswindres my.rc my.o
(algúnWinMain
mensaje de error relacionado), pero lawindres my.rc -O coff -o my.res
ruta funcionó bien..o
(= COFF automáticamente; lo nombro comomy.res.o
para mayor claridad) funciona para mí. En realidad, los.res
archivos producidos por MSVC tienen un formato diferente, por lo que parece ser extraño / incompatible con COFF en.res
Prueba 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