[CMake] How to add CMake includes and libraries to Visual Studio Solution?

hellhound at binary-revolution.org hellhound at binary-revolution.org
Mon Jan 16 10:24:52 EST 2012


I use CMake to generate a Visual Studio 2010 project and solution file. Actually I could set different settings, like warning level, incremental building flag ect. from CMake. But I can't set additional includes and libraries, listed in the VC++ Directory configuration tab. 

For GCC projects anything is running fine and I could compile and link the project. For MSVC I've
to add those directories manually to perform a compile and link. But this is stupid and boring...

I tried to set the following CMake variables: 

   INCLUDE_DIRECTORIES
   LINK_DIRECTORIES
   CMAKE_INCLUDE_PATH

but nothing happend. If i open the project, the additional include directory of the solution is always empty (only standard MSVE settings are given). I tired to set this variables after executable creation, but this has also no effect.

I also tried to set the MSVC environment variables INCLUDE and PATH with SET(ENV${PATH} "c:\test\...\") but this also has no effect. The directories of the MSVC solution are empty.

This is what i do directly in the header of the cmake file:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(${MODULE_NAME})
IF (MSVC)
   # Activate C++ exception handling
   IF (NOT CMAKE_CXX_FLAGS MATCHES "/EHsc")
   SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") 
   ENDIF ()

   # Set Warning level always to 4
   IF (CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
     string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
   ELSE ()
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
   ENDIF ()

   #read path of dependency modules  
   file(READ "msvc.deps" MSVC_PROPERTIES)
   STRING(REGEX REPLACE ";" "\\\\;" MSVC_PROPERTIES "${MSVC_PROPERTIES}")
   STRING(REGEX REPLACE "\n" ";" MSVC_PROPERTIES "${MSVC_PROPERTIES}")

   FOREACH(e ${MSVC_PROPERTIES})
     SET(INCLUDE ${INCLUDE} ${e})
     MESSAGE(STATUS "[INFO]: Value ${e}")
   ENDFOREACH(e)
   INCLUDE_DIRECTORIES(${INCLUDE})
ENDIF ()

In the .deps file I've added to path of my dependeny modules, line separated:

c:\binrev\development\boost\1.47\includes
c:\binrev\repository\modules\brCore\trunk\includes

Both are read successfully but couldn't be set as additional include directory in my MSVC solution. 

Best regards, Hellhound






More information about the CMake mailing list