2012-01-16 77 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

相關問題