2012-01-16 84 views
6

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

我试图设置下面的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文件我已经添加到我的dependeny模块路径, 行分隔:

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

两者都读取成功,但不能设置为额外的 包括我的MSVC解决方案中的目录。

最好的问候, 地狱犬

回答

7

CMake的是pretty well documented,如果我明白你的问题那么我认为你正在寻找的命令是

虽然有些配置是通过设置变量完成,大部分是使用命令某些信息添加到生成的零件,并通过对目标的设置属性略少频繁。

+0

我知道CMake是有据可查的,但这个变量不起作用。我设置了这些变量中的任何一个,但是当我打开MSVC解决方案时,没有任何设置。 – Hellhound 2012-01-16 11:39:54

+0

我也尝试使用SET(ENV $ {PATH}“c:\ test \ ... \”)设置MSVC环境变量INCLUDE和PATH,但这也没有效果。 MSVC解决方案的目录是空的。 – Hellhound 2012-01-16 11:41:14

+0

即使向'CMakeLists.txt'文件中添加'include_directories(/ path/to/include)',它们也不会被设置?你在声明你的目标之前是否加入了include_directories? (订单很重要)。如果是这样,你可以发布一些或全部说明问题的'CMakeLists.txt'文件吗?请注意,'CMAKE_INCLUDE_PATH'变量与编译器使用的包含路径无关,并且没有变量或称为'INCLUDE_DIRECTORY'的命令。 – 2012-01-16 12:52:28

2

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

+1

设置了这些变量,但没有发生任何变化。在解决方案中,includes目录为空。我也尝试在可执行代码之后设置这个变量,但没有效果。 – Hellhound 2012-01-16 11:42:53

0

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

我是一个纯粹的初学者。如果它是错的,我感到抱歉。

+0

我认为推荐添加include目录的方法是使用命令[include_directories()](http://www.cmake.org/cmake/help/v3.0/command/include_directories.html) – 2014-07-02 12:04:16

相关问题