我们如何使用cmake将facebookSDK添加到xcode项目中?

时间:2013-05-23 18:10:51

标签: ios xcode build cmake

我在使用cmake将facebookSDK.framework添加到我的xcode项目时遇到了一些困难? 这就是我现在所做的。但它似乎不起作用

set (facebook_sdk_path ${CMAKE_HOME_DIRECTORY}/external/framework/facebook/ios)
message("adding facebookSDK" ${facebook_sdk_path})
target_link_libraries(${Target} "${facebook_sdk_path}/facebookSDK.framework/facebookSDK")

我认为我们需要在项目设置的“框架搜索路径”下设置框架,但我对如何做到这一点并不十分确定。

2 个答案:

答案 0 :(得分:0)

找到了我的解决方案:我使用了从CMake and XCode: "cannot find interface declaration for 'NSObject'"

找到的这个宏
macro(AddExternalFramework fwname appname libpath)
    find_library(FRAMEWORK_${fwname}
        NAMES ${fwname}
        PATHS ${libpath} 
        NO_DEFAULT_PATH)
    if( ${FRAMEWORK_${fwname}} STREQUAL FRAMEWORK_${fwname}-NOTFOUND)
        MESSAGE(ERROR ": Framework ${fwname} not found: ${FRAMEWORK_${fwname}}")
    else()
        TARGET_LINK_LIBRARIES(${appname} ${FRAMEWORK_${fwname}})
        MESSAGE(STATUS "Framework ${fwname} found at ${FRAMEWORK_${fwname}}")
    endif()
endmacro(AddExternalFramework)

答案 1 :(得分:0)

我遇到了同样的问题,但弗兰克的回答并不适合我。正如在引用的帖子中提到的那样,调用TARGET_LINK_LIBRARIES会弄乱FRAMEWORK_SEARCH_PATHS变量。在我的情况下,它找到 FacebookSDK.framework ,但随后为包含的其余框架(例如UIKit,Foundation等)生成链接器错误。

我的解决方案只是将 FacebookSDK.framework 复制到XCode框架文件夹。请记住,如果您为设备和模拟器构建,则需要将其复制到iPhoneOS和iPhoneSimulator。目前,XCode7和SDK9.0,这些文件夹是:

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks
  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/System/Library/Frameworks

像往常一样添加 FacebookSDK.framework 可以正常工作:

SET (OUR_FRAMEWORKS "-framework Foundation -framework UIKit -framework FacebookSDK ...")