[CMake] WIN32_EXECUTABLE - Config specific settings for visual studio generated project files?
Michael Jackson
mike.jackson at bluequartz.net
Tue Oct 7 08:50:42 EDT 2008
Thought this was handy enough to add a wiki entry:
http://www.cmake.org/Wiki/VSConfigSpecificSettings
Mike
On Oct 7, 2008, at 12:49 AM, Jason Eubank wrote:
> Thanks Stefan, this worked well.
>
> My exact usage using your recommendations was as follows:
>
> if(WIN32)
> set_target_properties(WindowApplicationExample PROPERTIES
> LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
> set_target_properties(WindowApplicationExample PROPERTIES
> RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
> set_target_properties(WindowApplicationExample PROPERTIES
> LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS")
> set_target_properties(WindowApplicationExample PROPERTIES
> MINSIZEREL "/SUBSYSTEM:WINDOWS")
> endif(WIN32)
>
> This allows per-config setting of weather or not to use a console in
> visual studio, although it does not change the actual Subsytem
> setting in the Linker section, it does add it to the Additional
> Options setting in the Command Line section, which is then appended
> to the list of these settings and produces the same result.
>
> Thanks for the help!
>
> Jason
>
> On Mon, Oct 6, 2008 at 10:49 AM, Stefan Buschmann
> <s_buschmann at gmx.de> wrote:
> 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
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
More information about the CMake
mailing list