我正在使用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 )
我觉得它一定很简单吗?
答案 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)