objective-c - 使用启用 ARC 的 CMake 构建 Objective-C 库

标签 objective-c cmake

我正在尝试使用 CMake 构建一个支持 Objective-C ARC 的库。使用“Unix Makefiles”生成器时,我遇到了警告:

method possibly missing a [super dealloc] call



使用 XCode 生成器时,我不会遇到此警告。是否有我可以传递给 CMake 的标志以确保命令行构建也将其识别为 ARC 构建并且没有生成该警告?

谢谢

最佳答案

您需要让 CMake 知道您要使用 ARC 构建项目。否则,它将显示警告。

选项 1

然而,CTSetObjCArcEnabled仅当我们安装了 cmake-toolkit 时才可用。如果没有安装,可以使用以下方法:

set_property (TARGET target_name APPEND_STRING PROPERTY 
              COMPILE_FLAGS "-fobjc-arc")

选项 2(自 3.0 起已弃用)

使用 CTSetObjCARCEnabled .可引用here :

Enables or disables Objective-C Automatic Reference Counting on a per-directory, per-target or per-source basis.


CTSetObjCARCEnabled(<value>  
        <DIRECTORY | TARGETS targets... | SOURCES sources... >)

有用的提示

此外,正如从这里推荐的 answer ,使用以下内容来确保在启用 ARC 的情况下编译项目是有帮助的:
#if ! __has_feature(objc_arc)
#error "ARC is off"
#endif

关于objective-c - 使用启用 ARC 的 CMake 构建 Objective-C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28662299/

相关文章:

iphone - 以编程方式更改 UISlider 的范围

ios - UILongPressGestureRecognizer 按下坐标

opencv - 使用 CMake 交叉编译 OpenCV 与 MinGW(在 Linux for Windows 中)

c++ - ALL_BUILD 和 ZERO_CHECK 是什么,我需要它们吗?

objective-c - 在 numberOfRowsInSection 中调用 TableView BeginUpdates

objective-c - 用负值计算 'timeIntervalSinceNow'(CLLocation 示例)?

ios - 可以更新不在屏幕上的 UIViewController 吗?

c++ - 如何使用 cmake 为嵌套子目录设置 Visual Studio 过滤器

testing - 如果更改了 CMAKE_RUNTIME_OUTPUT_DIRECTORY,则 CMake 无法找到测试

c - 为什么当我启用 LTO/IPO 时 CMake 会设置 -no-fat-lto-objects?