我正在尝试使用CMake构建一个启用了Objective-C ARC的库。使用“ Unix Makefiles”生成器时,我遇到警告:
方法可能缺少[super dealloc]调用
使用XCode生成器时,我不会遇到此警告。我是否可以将标志传递给CMake以确保命令行版本也将其识别为ARC版本并且没有生成该警告?
谢谢
您需要让CMake知道您要使用ARC构建项目。否则,它将显示警告。
选项1
但是,CTSetObjCArcEnabled仅当我们安装了cmake-toolkit时才可用。如果未安装,则可以使用以下命令:
set_property (TARGET target_name APPEND_STRING PROPERTY
COMPILE_FLAGS "-fobjc-arc")
Run Code Online (Sandbox Code Playgroud)
选项2(从3.0开始不推荐使用)
使用CTSetObjCARCEnabled。参考在这里可用:
在每个目录,每个目标或每个源的基础上启用或禁用Objective-C自动引用计数。
CTSetObjCARCEnabled(<value>
<DIRECTORY | TARGETS targets... | SOURCES sources... >)
Run Code Online (Sandbox Code Playgroud)
有用的提示
另外,根据此答案的建议,使用以下命令来确保在启用ARC的情况下编译项目也很有帮助:
#if ! __has_feature(objc_arc)
#error "ARC is off"
#endif
Run Code Online (Sandbox Code Playgroud)
另一种方法是指定每个目标编译器标志。这可以被认为更符合现代 CMake:
target_compile_options(target_name PUBLIC "-fobjc-arc")
Run Code Online (Sandbox Code Playgroud)
注意:使用PUBLIC将根据此目标将此编译器标志传递到其他目标。替换为PRIVATE将阻止这种传播。
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |