无法将MacOS框架与CMake链接起来

我试图用cmake构build一个子项目(它不是一个xcode项目,甚至是一个iPhone应用程序,结果是跨平台的控制台可执行文件,其中#包含一些从Objective-C ++编写的C ++抽象类的inheritance)

我正在使用本指南链接mac os框架: http ://www.vtk.org/Wiki/CMake: HowToUseExistingOSXFrameworks

和这个macros:

macro(ADD_FRAMEWORK fwname appname) find_library(FRAMEWORK_${fwname} NAMES ${fwname} PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATH_SUFFIXES Frameworks NO_DEFAULT_PATH) if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND) MESSAGE(ERROR ": Framework ${fwname} not found") else() TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}}) MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}") endif() endmacro(ADD_FRAMEWORK) 

这是CMakeLists.txt中的重要部分

 project(myprojectname) ........ add_executable(mytarget src/mytarget.cpp) add_framework(CoreMedia mytarget) add_framework(CoreVideo mytarget) add_framework(AVFoundation mytarget) add_framework(Foundation mytarget) ........ 

而这正是我试图构build时的情况:

 WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreMedia.framework". Targets may link only to libraries. CMake is dropping the item. WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/CoreVideo.framework". Targets may link only to libraries. CMake is dropping the item. WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/AVFoundation.framework". Targets may link only to libraries. CMake is dropping the item. WARNING: Target "mytarget" requests linking to directory "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/System/Library/Frameworks/Foundation.framework". Targets may link only to libraries. CMake is dropping the item. 

它实际上find所有这些框架,但不能链接,这会产生很多链接器错误。 我敢肯定,这是因为我做了一个使用XCode testproj,它有相同的错误,直到我连接所有需要的框架。

当我只是使用

 FIND_LIBRARY(COREMEDIA_LIB CoreMedia) ... 

那么COREMEDIA_LIB被设置为NOTFOUND – 发生了什么? :/

我GOOGLE了很多,但没有:(感觉几乎失去了那里。

很难过,没有人回答:(正在努力工作,并得到了这个东西:你不得不链接TARGET_LINK_LIBRARIESframeworkname.framework文件夹,而是fwname.framework/fwname文件!!!现在,它就是这样工作的。

改变的macros是这样的:

 macro(ADD_FRAMEWORK fwname appname) find_library(FRAMEWORK_${fwname} NAMES ${fwname} PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATH_SUFFIXES Frameworks NO_DEFAULT_PATH) if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND) MESSAGE(ERROR ": Framework ${fwname} not found") else() TARGET_LINK_LIBRARIES(${appname} "${FRAMEWORK_${fwname}}/${fwname}") MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}") endif() endmacro(ADD_FRAMEWORK) 

希望这对某个人有用…