No Windows, usando o gcc do mingw, há alguma maneira de especificar que o arquivo exe de saída deve ter um arquivo de ícone, de modo que o arquivo exe seja exibido com esse ícone no explorer?
No Windows, usando o gcc do mingw, há alguma maneira de especificar que o arquivo exe de saída deve ter um arquivo de ícone, de modo que o arquivo exe seja exibido com esse ícone no explorer?
Respostas:
Você precisa criar o ícone primeiro. Então você precisa criar um arquivo RC com o conteúdo abaixo. Aqui vamos chamá-lo de my.rc
.
id ICON "path/to/my.ico"
O id
mencionado no comando acima pode ser praticamente qualquer coisa. Não importa, a menos que você queira se referir a ele em seu código. Em seguida, execute windres da seguinte forma:
windres my.rc -O coff -o my.res
Então, ao construir o executável, junto com outros arquivos de objeto e arquivos de recursos, inclua o my.res
que obtivemos na etapa anterior. por exemplo:
g++ -o my_app obj1.o obj2.o res1.res my.res
E isso deve ser tudo o que há para fazer.
E, sem nenhum custo extra, se você quiser incluir informações de versão em seu aplicativo, adicione o seguinte texto padrão a um novo .rc
arquivo e siga as etapas mencionadas acima.
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
Observe que o langID é para inglês do Reino Unido (que é a localização mais próxima da Austrália que eu consegui identificar.) Se você quiser "inglês" dos EUA, altere a BLOCK
linha para:
BLOCK "040904E4"
e a linha de tradução para:
VALUE "Translation", 0x409, 1252
Consulte o recurso VERSIONINFO para obter informações.
VALUE "Translation", 0x409, 1252, 0x809, 1252
de palavras , por exemplo: habilitaria o inglês dos EUA e do Reino Unido de acordo com msdn.microsoft.com/en-us/ library / aa381058.aspx . Isso também informa que você pode incluir mais de um 'BLOCK "lang04E4"'
IconsExtract
para obter um ícone embutido em um exe
que eu precisava.
No arquivo RC, o nameID nem precisa ser um nome, pode ser apenas um número inteiro. O nome do arquivo deve ser colocado entre aspas apenas se contiver um espaço. Ao invés de:
windres my.rc -O coff -o my.res
Você pode usar:
windres my.rc my.o
my.o
com MinGW g++
depois windres my.rc my.o
(alguma WinMain
mensagem de erro relacionada), mas o windres my.rc -O coff -o my.res
caminho funcionou bem.
.o
(= COFF automaticamente; nomeio assim my.res.o
para maior clareza) funciona para mim. Na verdade, os .res
arquivos produzidos por MSVC têm um formato diferente, então parece ser estranho / incompatível usando COFF em.res
Experimente Resource Hacker. Consegui compilar meu projeto no Linux (WSL) e gerar um ícone do logotipo na página inicial. Só precisava de uma maneira simples de incorporá-lo ao exe e este programa funcionou muito bem. Resource Hacker por Angus Johnson