繁体   English   中英

在Mac OS X上使用cmake链接到框架

[英]Linking to framework with cmake on Mac OS X

我正在尝试使用cmake在OS X上将一个程序与Ogre和其他一些库链接,但我不断收到此错误:

ld: warning: directory '/Library/Frameworks/SDL.framework/Debug' following -L not found
ld: warning: directory '-framework Cocoa/Debug' following -L not found
ld: warning: directory '-framework Cocoa' following -L not found
ld: warning: directory '/System/Library/Frameworks/OpenAL.framework/Debug' following -L not found
ld: warning: directory '/Library/Frameworks/Ogre.framework/Debug' following -L not found
ld: warning: directory '/opt/local/lib/libogg.dylib/Debug' following -L not found
ld: warning: path '/opt/local/lib/libogg.dylib' following -L not a directory
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/ogre/Debug' following -L not found
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/ogre' following -L not found
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/openal/Debug' following -L not found
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/openal' following -L not found
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/oggvorbis/Debug' following -L not found
ld: warning: directory '/Users/hydrowolfy/Documents/newphysgame/physgame/physgameengine/data/macosx/oggvorbis' following -L not found
ld: library not found for -lOgreMain
collect2: ld returned 1 exit status
Command /Developer/usr/bin/g++-4.2 failed with exit code 1

Windows和Linux上都可以使用相同的cmake文件。 我试图链接到我从ogre网站上的SDK获得的ogre 1.7.2框架。 我认为这是一个联系问题,而不是一个食人魔问题。 用cmake链接到框架并不像我希望的那样直观。 有想法该怎么解决这个吗?

首先,你应该注意的是${APPLE} “并不意味着该系统是Mac OS X中,只有苹果是在C / C ++头文件#define的。” 使用IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")检查OSX。

我没有您的构建环境来测试以下建议,但请尝试一下:

309行321行有错字。 它应该是"${OGRE_INCLUDE_DIR}" (而不是${OGRE_INCLUDE_DIRS} )。

第327行${SDL_LIBRARY}${OPENAL_LIBRARY}${OGG_LIBRARY}是库文件的路径,而它们应该是这些库目录的路径。 link_directories告诉链接器哪些目录包含您在target_link_libraries指定的库。

除OGRE以外, 第327行指定其FindXXX.cmake未定义_LIB_DIR变量(或表示包含该库的目录的等效变量)的库(SDL,AL和OGG)。 所以那条线应该是

link_directories("${OGRE_LIB_DIR}")

同样, 第336行似乎也不是正确的语法。 target_link_libraries将目标(在本例中为physgame库)作为第一个参数,但是您已将其传递到Ogre库目录的路径。 由于在定义目标之前无法调用该命令,因此必须将其推迟到386行

第386行从:

target_link_libraries( ${PROJECT_NAME} OgreMain ${Bullet_LibraryNames} cAudio SDL )

至:

target_link_libraries(
    ${PROJECT_NAME}
    "${OGRE_LIBRARIES}"
    ${Bullet_LibraryNames}
    "${OPENAL_LIBRARY}" 
    "${SDL_LIBRARY}"
)

您可能也会对此感兴趣: http : //www.ogre3d.org/forums/viewtopic.php?f=1&t=58610&start=0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM