CMake 和 XCode:“找不到‘NSObject’的接口声明”

2024-01-09

我正在尝试使用 CMake 生成 XCode 项目,但遇到了一些问题。

CMake 生成的项目很好,但后来很明显它没有链接到 Foundation 和 UIKit 框架。我对 CMake 还很陌生,一直在努力克服这个问题,但没有成功。

CMake 输出(部分):

...
Framework Foundation found at /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/Frameworks/Foundation.framework
Framework CoreGraphics found at /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/Frameworks/CoreGraphics.framework
Framework UIKit found at /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/Frameworks/UIKit.framework
Configuring done
Generating done

下面是我的CMakeLists.txt文件(将几个答案放在一起):

cmake_minimum_required(VERSION 2.8)

macro(ADD_FRAMEWORK fwname appname libpath)
    find_library(FRAMEWORK_${fwname}
        NAMES ${fwname}
        PATHS ${libpath}

        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)

project(test)
set(NAME test)
set (libpath /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library)


file(GLOB headers *.h)
file(GLOB sources *.m)

set(CMAKE_OSX_SYSROOT iphoneos4.2)
set(CMAKE_OSX_ARCHITECTURES $(ARCHS_STANDARD_32_BIT))
set(CMAKE_CXX_FLAGS "-x objective-c++")
set(CMAKE_EXE_LINKER_FLAGS
    "-framework AudioToolbox -framework CoreGraphics -framework QuartzCore -framework UIKit -framework Foundation"
)

set(MACOSX_BUNDLE_GUI_IDENTIFIER "com.mycompany.\${PRODUCT_NAME:identifier}")
set(APP_TYPE MACOSX_BUNDLE)

add_executable(${NAME}
    ${APP_TYPE}
    ${headers}
    ${sources}
)

ADD_FRAMEWORK(Foundation ${NAME} ${libpath})
ADD_FRAMEWORK(CoreGraphics ${NAME} ${libpath})
ADD_FRAMEWORK(UIKit ${NAME} ${libpath})

# code signing
set_target_properties(${NAME} PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer: Some Name")

我有几个建议:

  • 不要使用add_framework。这使得 CMake 设置项目属性FRAMEWORK_SEARCH_PATHS这不知何故搞砸了一切。而是使用命令行开关-framework
  • for CMAKE_OSX_SYSROOT你可以只使用iphoneos
  • 你不需要CMAKE_CXX_FLAGS

有了这些,你可能会有更多的运气。到目前为止,我设法克服了大部分链接错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake 和 XCode:“找不到‘NSObject’的接口声明” 的相关文章

  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • 您无权使用此服务 iTunes 应用程序上传错误 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 自 2015 年 11 月末 Apple 用户和角色 更新至 iTunesConnect 以来 一些人一直遇到错误消息 iTunes
  • 如何使 RLMResults 可变?

    Realm 文档说RLMResults正在舔NSArray 我有一些从数据库返回的结果 我想将其合并到另一个RLMResults 但它似乎是一成不变的 如何制作RLMResults添加另一个对象RLMResults 或使其可变 或将其转换为
  • iOS 13 奇怪的搜索控制器差距

    当使用 Xcode 11 beta 5 在 iOS 13 beta 6 上运行应用程序时 我在呈现搜索结果视图控制器时遇到了奇怪的间隙 下面是它的一些设置方法 let searchResultsController BLSearchResu
  • 如何在 Xcode 4 和 Cordova 中使用符号链接

    我无法让 Xcode 将 www 资源复制到我基于 PhoneGap 的 iPhone 应用程序 我考虑过使用 Git 子模块 但由于应用程序必须在不同的平台 iPhone Android 等 上运行 并且必须采用不同的品牌 图像 CSS
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • 如何将 UIView 的子视图居中

    我有一个UIView里面一个UIView我和我想要内在UIView始终在外部居中 而不必调整宽度和高度的大小 我已经设置了支柱和弹簧 使其位于顶部 左侧 右侧 底部 而无需设置调整大小 但它仍然没有居中 任何想法 你可以这样做 它总是有效的
  • 如何使用宏检测 iPhone 操作系统版本

    我想在我的应用程序中检测 iPhone 操作系统版本 我尝试过使用检测代码 但建议使用宏 有人有经验吗 你可以发布示例代码 以及使用什么库 我不确定建议您使用什么宏 我一直认为查找版本号以便与未来和以前的版本兼容的标准方法是使用 NSStr
  • 核心数据插入具有现有关系的新数据

    我的核心数据有问题 我有一个看起来像这样的表 用户 与 机架 与 机架项目的关系 我应该如何将新对象插入到具有用户中现有项目对象和现有机架对象的机架项目中 我尝试获取现有对象 predicate NSPredicate predicateW
  • 下载文件时如何更新 UICollectionViewCell 子类中的进度条

    我要疯了 我正在尝试更新进度条UICollectionViewCelll当我下载文件时 我已经尝试了一切 一切 这是我最后的尝试 我创建了一个子类UICollectionViewCell 与一个连接xib file import
  • 连接广播而不是服务器后AsyncUdpSocket接收数据的小问题

    我的 AsyncUdpSocket 有问题 我曾经连接到服务器 发送一些数据并获得一些响应 现在 由于我不知道服务器的实际地址 我不得不更改代码并将数据发送到广播地址 255 255 255 255 这是我的代码 NSString bcho
  • CMake 添加对安装目标的依赖

    我在使用cmake时遇到以下问题 我使用 UseDoxygen 来自http tobias rautenkranz ch cmake doxygen http tobias rautenkranz ch cmake doxygen 为我的图
  • IOS:从故事板中的原型单元中触发多个segues

    有没有办法将原型单元连接到不同的场景 并在 didSelectRowAtIndexPath 方法上调用 self PerformSegueWithIdentifier NAMEOFTHESEGUE sender self 我似乎无法将多个
  • UIDatePicker 仅显示月份和日期

    我想要一个UIDatePicker用户可以选择月份和日期 但不能选择年份 我知道闰年有额外的一天 所以为了简单起见 让我们把这一天扔掉 有没有办法删除年份列或有 2 个带有月 日的卷轴 其作用类似于UIDatePicker 所选月份中不存在
  • UIStatusBarStyle PreferredStatusBarStyle 在 iOS 7 上不起作用

    在我使用 Xcode 5 for iOS 7 构建的 iPhone 应用程序中 我设置了UIViewControllerBasedStatusBarAppearance YES in info plist 并在我的ViewControlle
  • iPhone SDK 3.0 和 symbolicatecrash 相处不好?

    更新 我已经重新安装了 Snow Leopard 全新安装 完全清除了我现有的 Leopard 安装 同样的问题仍然存在 我已经尝试了多个版本的 symbolicatecrash 来解析崩溃报告中的符号 从 Apple 提供的版本 到 Al
  • 在特定点停止 CABasicAnimation

    我正在使用创建的旋转动画CABasicAnimation 它旋转一个UIView超过2秒 但我需要能够阻止它UIView被感动了 如果我删除动画 视图将处于与动画开始之前相同的位置 这是我的动画代码 float duration 2 0 f
  • 如何在 Xcode 中找到特定函数(如 eclipse 的调用层次结构)的所有调用函数?

    我如何在 XCode 中找到特定函数的所有调用函数 例如 eclipse 的调用层次结构 自 XCode 4 4 发布以来 此功能就存在并称为 显示相关项目 有多种方法可以访问弹出菜单 使您可以查看所有呼叫者和被呼叫者等 最快的方法是 在代
  • 我可以安装共享导入库吗?

    我有一个外部项目和一个导入的共享库 include 目录和 implib 都可以正常工作 但尝试安装共享库 dll 失败并出现以下错误 install TARGETS given target my shared lib which doe
  • 如何在 CMake 中运行基本的“add_custom_command”

    我只是想启动并运行一个基本的 CMake 示例 它可以运行一些基本的命令行命令 我已经研究这个有一段时间了 但没有任何运气 我完全用错了吗 任何和所有的意见将不胜感激 cmake minimum required VERSION 3 0 a

随机推荐