Makefile中为某个文件使用/禁用arc


#1

请教大家一个问题,我有多个m文件 ,有的是第三方的,第三方的不能使用arc,之前使用iOSOpendev的时候,只需要在compile Source那一栏为第三方的文件加上编译选项-fno-objc-arc即可,使用theos的话,makefile应该怎么去写呢?


#2

非常遗憾,Theos目前不支持这个特性。我想解决办法只有绕一下,把需要用到arc的部分和不需要用到arc的部分编译成2个不同的文件,然后协调工作,但确实很不方便


#3

恩,thx~我把全部都弄成arc了


#4

你好 我想请问怎么在theos使用ARC代码呢


#5

只能全部ARC


#6

要么全部ARC,要么全部MRC。我的Makefile没配置啥的话是MRC的,换成ARC的话需要加上:

ADDITIONAL_OBJCFLAGS = -fobjc-arc

参考:https://stackoverflow.com/a/15757242/1749293

至于特定某个文件单独设置的,还不知道。

附个Makefile参考:

GO_EASY_ON_ME = 1
THEOS_DEVICE_IP = localhost
THEOS_DEVICE_PORT = 2222
ARCHS = armv7 arm64
TARGET = iphone:latest:8.0

ADDITIONAL_OBJCFLAGS = -fobjc-arc

include $(THEOS)/makefiles/common.mk

THEOS_INCLUDE_PATH := src/

TWEAK_NAME = TweakName

TweakName_LDFLAGS += src/libffi.a

TweakName_FRAMEWORKS = UIKit

TweakName_FILES = $(wildcard ./*.m) $(wildcard src/*.m) TweakName.xm

include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 backboardd; killall -9 SpringBoard"

#7

现在有单文件设置的。另外这是一年前的坟。。。。


#8

http://iphonedevwiki.net/index.php/Using_ARC_in_tweaks
听了大神的话,查了查,确实是有对单文件ARC设置的了。


#9

但有个疑问,Tweak启用ARC后(Makefile加上TweakName_CFLAGS = -fobjc-arc),却想为某个单独文件加上MRC的Flagfno-objc-arc就不行了。
iPhoneDevWiki上建议"separate the projects. "。除了这个建议,而且又是仅是一两个.m文件需要,有没有更好快捷的解决方法呢?哪位大神知道的话,烦告诉我一声,在这里先谢谢了。


#10

不太清楚Theos内部是怎么传CFLAGS的。应该是调用clang的时候先把全局添加了再添加单文件的选项然后cl的option parsing有某种override的机制


#11

所以要么就抛弃全局CFLAGS单个设置