26 Nov 2017

Adding version information and an Icon to C++ application in NetBeans IDE 8.2 (Win10 + MinGW-W64)

This post is about my personal experience with adding version information to application .exe file.  This tutorial is focused to make things work, but it may not be the best approach...


Prerequisites for this task

  • Install NetBeans IDE 8.2 for C/C++
  • Install and configure MinGW-W64 compiler
You should be able to compile and run simple Hello World! example for 64-bit application both in NetBeans IDE and as standalone application from folder on Windows 10. Firstly, create the  NetBeans C/C++ project for "Hello World!" application. In my case, the project name is MyApp.




Put "Hello World!" message to main.cpp by printf function from stdio.h.


To compile the project for 64-bit Windows 10, you need to configure the C++ Compiler options. First, select All Configurations so you can set the same options for Debug and Release configuration at once. Also, select the 64 Bits in Architecture options and add two Additional Options to Compilation line 
-static-libgcc -static-libstdc++

In Run options, you need to select the Console Type as Standard Output. My configuration for C++ Compiler was


And Run configuration was


Compilation output for my application was


and Run output was


My application file myapp.exe is now located in dest folder, by right clicking on it I can see that it does not contain any information about version or author. We are going to change it!



Adding the version information to application

I found this solution on StackOverflow by Ernestas Gruodis and adopted by my needs. First, you need to create header file ids.h


Secondly, you need to create resource.rc file with application values for your application. Add it as new empty file


name it resource with .rc extension and put code with ids.h include:


Now, you need to locate the resource.rc file and select its Properties by right-clicking 


In General, make sure that it is NOT excluded from build (at least for the first time).


On left pane, select Custom Build Step



On right side, you need to configure the Custom Build options for All configurations
  • Command Line: windres.exe resource.rc resource.o
  • Outputs: resource.o
  • Additional Dependencies: ids.h
  • Description: as you wish



Now, open Project properties and select Linker options. For All Configuration, add resource.o to Additional Dependencies and Additional Options for Compilation line.


Now, since the application needs an Icon, you can create one if you do not have any. You can use, for example, the Paint to create square shape image and than use online converter to make .ico file. My icon is 128x128 .png image, converted to 128x128 icon.


Name it as stated in resource.rc file, in my case MyAppIcon.ico and put it to project folder. You can include it as an existing item to Resource files in project. Last thing is to add manifest file. Add it as an empty file with name myapp.exe.manifest. The file remains empty in project.




To summarize the solution, overview on project folder is:
Now, when you Clean and Compile the project, you should see the compilation output.


The application file myapp.exe in dest folder now have an icon and properties.


Use version information in application

If needed, you can use version as an defined value. Add new defines for version


and modify main.cpp by adding include for ids.h and output line with version information

To link the version information defined in ids.h with version shown in Properties window, you also need to modify the resource.rc as


Now, when you Clean and Compile the project, you can run the application by command line and see the version like mine.







No comments:

Post a Comment