[CMake] /MT with Microsoft Visual Studio 2005

Thomas Wilkens thomas.wilkens at offis.de
Wed Nov 16 10:01:44 EST 2005


Hello CMake experts,

I am experiencing a problem when trying to build .sln and .vcproj files for 
Microsoft Visual Studio 2005 with CMake 2.2.2: all projects in our solution 
(DICOM Toolkit "DCMTK") need to be compiled using the "Multithreaded" (or 
"Multithreaded debug" for debug configurations) code generation option 
instead of "Multithreaded DLL" (or "Multithreaded DLL debug" for debug 
configurations), but I am not able to create corresponding project files 
with CMake.

When I start MS Visual Studio 2005 (making use of the project files which 
were generated by CMake), the project properties always show "Multithreaded 
DLL" (or "Multithreaded DLL debug" for debug configurations) in the C/C++ / 
Code Generation / Runtime Library settings. The compiler option "/MT" (or 
"MTd") that I specified in my CMakeLists.txt file always only occurs in the 
C/C++ / Command Line / Additional options textbox.

Here is the corresponding excerpt from my CMakeLists.txt file:

---snip---snip---snip---snip---snip---snip---snip---snip---snip---

# settings for Microsoft Visual C
IF(CMAKE_C_COMPILER MATCHES cl)
   IF(NOT WITH_SHARED_LIBS)
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
       SET(CMAKE_C_FLAGS "/nologo /W3 /GX /Gy /YX")
       SET(CMAKE_C_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_C_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR 
STREQUAL "Visual Studio 7 .NET 2003")
       SET(CMAKE_C_FLAGS "/nologo /W3 /Gy")
       SET(CMAKE_C_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_C_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR 
STREQUAL "Visual Studio 7 .NET 2003")
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
       SET(CMAKE_C_FLAGS "/nologo /W3 /Gy")
       SET(CMAKE_C_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_C_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_C_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
   ENDIF(NOT WITH_SHARED_LIBS)
ENDIF(CMAKE_C_COMPILER MATCHES cl)
# settings for Microsoft Visual C++
IF(CMAKE_CXX_COMPILER MATCHES cl)
   IF(NOT WITH_SHARED_LIBS)
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
       SET(CMAKE_CXX_FLAGS "/nologo /W3 /GX /Gy /YX")
       SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 6")
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR 
STREQUAL "Visual Studio 7 .NET 2003")
       SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy")
       SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 7" OR CMAKE_GENERATOR 
STREQUAL "Visual Studio 7 .NET 2003")
     IF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
       SET(CMAKE_CXX_FLAGS "/nologo /W3 /Gy")
       SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Z7 /Od")
       SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2")
       SET(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O2")
       SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MTd /Z7 /Od")
     ENDIF(CMAKE_GENERATOR STREQUAL "Visual Studio 8 2005")
   ENDIF(NOT WITH_SHARED_LIBS)
ENDIF(CMAKE_CXX_COMPILER MATCHES cl)

---snip---snip---snip---snip---snip---snip---snip---snip---snip---

This CMakeLists.txt file works fine with (CMake 2.0.6 and) MS Visual C++ 6 
and MS Visual Studio 2003, I dont understand why there is a problem with 
(CMake 2.2.2 and) MS Visual 2005.

Has anyone of you experienced the same problem and found a solution?

Thanks in advance for any replies.

Best regards,
Thomas Wilkens


---
Dipl. Inform. Thomas Wilkens
OFFIS
Escherweg 2 - 26121 Oldenburg - Germany
Fon: +49 441 9722 169 - Fax: +49 441 9722 102
E-Mail: thomas.wilkens at offis.de - URL: http://www.offis.de



More information about the CMake mailing list