如何将CMake包含和库添加到Visual Studio解决方案?

时间:2012-01-16 11:21:16

标签: c++ visual-studio-2010 cmake

我使用CMake生成Visual Studio 2010项目和解决方案文件。其实我可以设置不同的设置, 像警告级别,增量建筑标志等。来自CMake。但我无法设置其他包含和库, 列在VC ++目录配置选项卡中。其实我要手动设置这些目录。这是愚蠢的 而且很无聊......

我尝试设置以下CMake变量:CMAKE_INCLUDE_PATH,INCLUDE_DIRECTORY 但没有任何事情发生。如果我打开项目,解决方案的附加包含目录始终为空(仅给出标准的MSVE设置)。

我也厌倦了在创建可执行文件后设置这些变量,但这也没有效果。

这就是我直接在cmake的标题中做的事情 档案:

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 ()

在.deps文件中,我已添加到我的依赖模块的路径中, 分隔线:

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

两者都已成功读取但无法设置为附加 在我的MSVC解决方案中包含目录。

祝你好运, Hellhound

4 个答案:

答案 0 :(得分:8)

CMake是pretty well documented,如果我理解了您的问题,那么我认为您正在寻找的命令是

虽然某些配置是通过设置变量来完成的,但大部分配置是通过使用命令将某些信息添加到构建的某些部分来完成的,并且通过在目标上设置属性来略微减少。

答案 1 :(得分:2)

我相信CMakeLists.txt中某处的include_directories ("path")会将path添加到C ++包含路径。

答案 2 :(得分:0)

您通过语句'SET(INCLUDE $ {INCLUDE} $ {e})'定义了变量'INCLUDE',但'$ {INCLUDE}'表示之前已定义变量。也许你应该确定这一点。

我只是一个初学者。如果错了,我会感到抱歉。

答案 3 :(得分:0)

是的。尽管它没有出现在“ VC ++目录”选项卡下的“包含目录”中,但确实显示在C / C ++->常规下的“其他包含目录”中。