[cmake-developers] [CMake 0015917]: Visual Studio project files generated incorrectly

Mantis Bug Tracker mantis at public.kitware.com
Wed Jan 13 18:16:06 EST 2016


The following issue has been SUBMITTED. 
====================================================================== 
https://cmake.org/Bug/view.php?id=15917 
====================================================================== 
Reported By:                Daniel Williams
Assigned To:                
====================================================================== 
Project:                    CMake
Issue ID:                   15917
Category:                   CMake
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
====================================================================== 
Date Submitted:             2016-01-13 18:16 EST
Last Modified:              2016-01-13 18:16 EST
====================================================================== 
Summary:                    Visual Studio project files generated incorrectly
Description: 
Executables are incorrectly flagged as Application executables (i.e. to use
winMain) instead of utility / console executables (and use the normal main)

when cmake is generating solution (.sln) and project (.vcxproj) files for Visual
Studio, it cannot set the flags correctly.  The generator creates: 
    <ConfigurationType>Application</ConfigurationType>

Instead of:
    <ConfigurationType>Utility</ConfigurationType>

This in turn causes compile-time Link Errors 

As it should.  This is controlled by a flag on the executable. (or so says the
documentation): 
[1]https://cmake.org/cmake/help/v3.4/command/add_executable.html
[2]https://cmake.org/cmake/help/v3.4/prop_tgt/WIN32_EXECUTABLE.html






Steps to Reproduce: 
1) create empty project with supplied CMakeLists.txt
2) create a minimal 'main.cpp'  (contents don't matter, empty should be fine)
3) run configure ; run generate
4) inspect $BUILD_DIR/test.exe.vcxproj
   DOM: Project/PropertyGroup/ConfigurationType values will all still be set to
"Application" which requires the winmain symbol be defined.  

This Application tag is generated both with and without the WIN32 flag.  It is
only supposed to be generated *with*.  (Without the flag, the
'ConfigurationType' tag should be set to 'Utility', the console exe version.)

Additional Information: 
1) Originally Reproduced as far back as CMake 3.1.2
2) the 'set_executable(...)' function correctly sets the flag, as checked by
'get_target_property(...)', but this property does not carry through to the file
generation stage.
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2016-01-13 18:16 Daniel WilliamsNew Issue                                    
2016-01-13 18:16 Daniel WilliamsFile Added: CMakeLists.txt                    
======================================================================



More information about the cmake-developers mailing list