Bagaimana cara menambahkan ikon ke file executable mingw-gcc yang dikompilasi?

90

Di Windows, menggunakan mingw's gcc, apakah ada cara untuk menentukan bahwa file exe keluaran adalah untuk mengambil file ikon, sehingga file exe ditampilkan dengan ikon itu di explorer?

Mihai Limbășan
sumber

Jawaban:

187

Anda perlu membuat ikon terlebih dahulu. Maka Anda perlu membuat file RC dengan konten di bawah ini. Di sini kami akan menamainya sebagai my.rc.

Yang iddisebutkan dalam perintah di atas bisa berarti apa saja. Tidak masalah kecuali jika Anda ingin merujuknya di kode Anda. Kemudian jalankan windres sebagai berikut:

Kemudian saat membangun file yang dapat dieksekusi, bersama dengan file objek dan file sumber daya lainnya, sertakan my.resyang kami dapatkan dari langkah di atas. misalnya:

Dan seharusnya hanya itu saja.


Dan, tanpa biaya tambahan, jika Anda ingin memasukkan informasi versi dalam aplikasi Anda, tambahkan boilerplate berikut ke .rcfile baru dan ikuti langkah-langkah yang disebutkan di atas.

Perhatikan, langID adalah untuk Inggris Inggris (yang merupakan pelokalan terdekat dengan Australia yang dapat saya identifikasi.) Jika Anda menginginkan "Bahasa Inggris" AS, ubah BLOCK baris menjadi:

dan baris terjemahan ke:

Lihat sumber daya VERSIONINFO untuk info.

Evan
sumber
6
Akan lebih bagus jika contoh menunjukkan di mana harus memasukkan baris ICON.
chacham15
Dan ... kedua .. stackoverflow.com/questions/1411040/…
Erik Friesen
Anda juga dapat menyertakan beberapa "Terjemahan" (ini hanya memberi tahu Windows bahwa program ini diterjemahkan) hanya dengan menambahkan WORD, WORD-pair, misalnya: VALUE "Translation", 0x409, 1252, 0x809, 1252akan mengaktifkan bahasa Inggris AS dan Inggris Raya menurut msdn.microsoft.com/en-us/ library / aa381058.aspx . Ini juga memberi tahu Anda bahwa Anda dapat menyertakan lebih dari satu 'BLOK "lang04E4"'
WorldSEnder
Saya menggunakan utilitas gratis Nirsoft IconsExtractuntuk mendapatkan ikon yang disematkan di exeyang saya butuhkan.
Evgeni Sergeev
6

Dalam file RC, nameID bahkan tidak harus berupa nama, hanya bisa berupa integer. Nama file harus dikutip hanya jika mengandung spasi. Dari pada:

Kamu dapat memakai:

Steven Penny
sumber
1
Saya tidak bisa menautkan my.odengan MinGW g++setelahnya windres my.rc my.o( WinMainpesan kesalahan terkait beberapa ), tetapi windres my.rc -O coff -o my.resjalur berfungsi dengan baik.
Evgeni Sergeev
.o(= COFF secara otomatis; Saya menamakannya seperti my.res.ountuk kejelasan) bekerja untuk saya. Sebenarnya .resfile yang dihasilkan oleh MSVC memiliki format yang berbeda, jadi sepertinya menjadi ganjil / tidak kompatibel menggunakan COFF di.res
kxr
1

Coba Resource Hacker. Saya dapat mengkompilasi silang proyek saya di Linux (WSL) dan menghasilkan ikon dari logo di beranda. Hanya membutuhkan cara sederhana untuk menyematkannya di exe dan program ini bekerja dengan baik. Resource Hacker oleh Angus Johnson

noabody
sumber
Ini jauh lebih mudah. Baru saja membuka .exe, klik "Tambahkan Biner atau Sumber Daya Gambar", buka file .ico, dan simpan.
endolith