简体   繁体   English

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

[英]How do we add facebookSDK into a xcode project using cmake?

I am having some difficulties adding facebookSDK.framework into my xcode project using cmake? 我在使用cmake将facebookSDK.framework添加到我的xcode项目时遇到一些困难吗? Here's what i have done up to now. 这是我到目前为止所做的。 But it doesn't seem to work 但这似乎不起作用

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")

I believe we need to set the framework under "framework search paths" on the project settings, but I am not exactly too sure on how to do this. 我相信我们需要在项目设置的“框架搜索路径”下设置框架,但是我不确定如何做到这一点。

found my solution: i used this macro i found from CMake and XCode: "cannot find interface declaration for 'NSObject'" 找到了我的解决方案:我使用了从CMake和XCode中找到的这个宏:“找不到'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)

I ran into the same issue but Frank's answer didn't work for me. 我遇到了同样的问题,但是弗兰克的答案对我没有用。 As it was mentioned on the post referenced, calling TARGET_LINK_LIBRARIES messes up the FRAMEWORK_SEARCH_PATHS variable. 正如所引用的帖子中提到的那样,调用TARGET_LINK_LIBRARIES弄乱了FRAMEWORK_SEARCH_PATHS变量。 In my case it finds FacebookSDK.framework but then generates linker errors for the rest of the frameworks included (eg UIKit, Foundation, etc.). 在我的情况下,它找到了FacebookSDK.framework,但随后为包括的其余框架(例如UIKit,Foundation等)生成了链接器错误。

My solution was simply copying FacebookSDK.framework to the XCode frameworks folders. 我的解决方案只是将FacebookSDK.framework复制到XCode frameworks文件夹。 Bear in mind you need to copy it to both iPhoneOS and iPhoneSimulator if you build for device and simulator. 请记住,如果要为设备和模拟器进行构建,则需要将其复制到iPhoneOS和iPhoneSimulator。 Currently, XCode7 and SDK9.0, those folders are: 当前,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

Adding FacebookSDK.framework as usual works fine then: 照常添加FacebookSDK.framework可以正常工作,然后:

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

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

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