[CMake] WIN32_EXECUTABLE - Config specific settings for visual studio generated project files?

Stefan Buschmann s_buschmann at gmx.de
Mon Oct 6 11:49:12 EDT 2008


Jason Eubank schrieb:
> Hello,
>
> I am wondering if it is possible to set the target property 
> 'WIN32_EXECUTABLE' on a per-config basis (i.e. you can set link-flags 
> on a per-config basis using LINK_FLAGS_<Config>). From reading the 
> documentation this does not seem possible and if you set this property 
> then all configurations (in Visual Studio) use the same subsystem setting.
I don't know whether or not CMake is able to set a property on a 
per-configuration basis. I doubt this is possible (yet), but could be 
that I'm wrong here.

But you could simply set the appropriate flags for a console/win32 
application yourself, without using this flag at all. The only 
differences I could find between a win32 application and a console 
application are
- Linker flag: "/SUBSYSTEM:CONSOLE" for console apps and 
"/SUBSYSTEM:WINDOWS" for win32 apps
- Preprocessor definition: '_CONSOLE' for console apps

Setting these using LINK_FLAGS_<Config> and COMPILE_DEFINITIONS_<Config> 
should do exactly what you want. The only problem I see that could 
possibly arise is that you can't depend on the WIN32_EXECUTABLE flag in 
your CMake file(s) anymore, to test for it or use it in any other way later.

Another solution that comes to my mind is to always create a win32 
application, and then open a console window later by using the win32 
function 'AllocConsole' in your code. I never really needed this, but I 
know those functions are there to create or attach a console window to a 
win32 application. Have a look at the documentation for this function.

Stefan



More information about the CMake mailing list