CMAKE变量的问题

时间:2011-02-09 17:09:54

标签: visual-c++ cmake

我正在使用CMAKE生成VS2008 SLN / VCPROJ文件,但是一些简单的东西似乎不起作用:

1)这有效:INCLUDE_DIRECTORIES ($ENV{MCS_OGRE_HOME}/OgreMain/include)

但事实并非如此,我的VC ++附加功能包括当我这样做时dirs完全搞砸了,括号和各种各样的东西浮现:

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

2)这有效:target_link_libraries( debug $ENV{OGRE_HOME}/lib/OgreMainStatic_d.lib )

但事实并非如此,库路径未显示在VC ++中的库路径下:

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

我觉得它一定很简单吗?

1 个答案:

答案 0 :(得分:1)

而不是:

set(OGRE_PATH $ENV{OGRE_HOME}/OgreMain)

使用:

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

CMake在所有平台上使用所有“/”表示路径分隔符。

此外,建议使用完整路径名(带有“/”分隔符)作为target_link_libraries的库参数,而不是指定link_directories。然后,CMake将整个库链接到并找出正确的顺序,以便在所有平台上传递链接器标志。

还有一条评论:看起来你有一个库或一个名为“debug”的可执行文件,来自你对target_link_libraries的调用。真的吗?或者您是否错过了此处发布的问题中的第一个参数?

应该是这样的:

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