2011-02-09 68 views
0

我使用cmake生成VS2008 SLN/VCPROJ文件,但一些簡單的事情似乎並沒有工作:與CMake的問題

1)本作品:INCLUDE_DIRECTORIES ($ENV{MCS_OGRE_HOME}/OgreMain/include)

但這並不,我的VC++額外的include目錄被完全搞砸了,我這樣做,當支架和各種漂浮:

SET (OGRE_PATH $ENV{OGRE_HOME}/OgreMain) 
INCLUDE_DIRECTORIES (${OGRE_PATH}/include) 

2)這工作:target_link_libraries(debug $ENV{OGRE_HOME}/lib/OgreMainStatic_d.lib)

LINK_DIRECTORIES($ENV{OGRE_HOME}/lib/) 
target_link_libraries(debug OgreMainStatic_d.lib) 

我想,這一定是簡單的東西:但這不,是不是在VC++庫路徑下所示的庫路徑?

+0

難道你OGRE_HOME環境變量包含 '\' 字符? – tibur 2011-02-09 17:14:34

+0

@tibur是的,這是一個標準的Windows風格的路徑。 CMAKE不允許嗎? – 2011-02-09 17:23:44

回答

1

不是:

set(OGRE_PATH $ENV{OGRE_HOME}/OgreMain) 

用途:

string(REPLACE "\\" "/" OGRE_PATH "$ENV{OGRE_HOME}/OgreMain") 

CMake的使用在所有平臺上的所有 「/」 作爲路徑分隔符。

此外,它建議使用作爲庫參數全路徑名(以「/」分隔符)以target_link_libraries,而不是指定link_directories。然後,CMake將整套庫鏈接到並計算出正確的順序,以在所有平臺上傳遞鏈接器標誌。

還有一個評論:看起來你有一個圖書館或從您的來電target_link_libraries名爲「調試」的可執行文件。真的嗎?或者你錯過了這裏發佈的問題中的第一個參數?

應該是這樣的:

target_link_libraries(mylib 
    debug /path/to/DebugLib.lib 
    optimized /path/to/ReleaseLib.lib)