KyleWong
KyleWong
Unfortunately, neither of it works.
> OK. What command `perl configdata.pm --dump` returns? > > ```shell > cd ToolChain/Sources/ssl/ > perl configdata.pm --dump > ``` kylewong@KyleWongs-MacBook-Pro ssl % perl configdata.pm --dump Can't open perl script...
第一个问题,你可以尝试拿掉opt/local/lib的option,看下有没有问题,链接这个目录是因为我自己有好多macport管理的系统库在这里,第二个问题,是因为xcode9下的clang以及oc规范和llvm39有差异了,你可以尝试用最新的llvm release去看下。其实Xcode自带的clang和llvm的clang并不完全一致的,即便是最新的llvm,也有这个问题。 https://opensource.apple.com/source/clang/ https://en.wikipedia.org/wiki/Xcode 遗憾的是,现在xcode9自带的clang还未开源。 2017-11-14 15:00 GMT+08:00 LanCat : > 您好 我参考您的博客 CLANG技术分享系列一:编写你的第一个CLANG插件 有两个问题 第一 我没法找到opt/local/lib 目录 > ,第二在Xcode下 报错,_error nullability specifier '_Nullable' cannot be applied to > non-pointer...
@smileagainluo dylib生成好的情况下,需要确认自己使用的compiler是Clang LLVM Trunk(工程设置里面的Compiler for C/C++/Objective-C),并修改OTHER_CFLAGS使clang载入相应的插件和参数,如I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 -mios-version-min=8.0 -Xclang -load -Xclang /opt/local/lib/clangplugin/libClangZombieCodePlugin.dylib -Xclang -add-plugin -Xclang ClangZombieCodePlugin -Xclang -plugin-arg-ClangZombieCodePlugin -Xclang $SRCROOT 这样做,实际上就是把命令行里clang载入插件和参数的方式应用到了xcode中去,没问题的话就可以生成Analyzer中的中间文件了; 对于jsonpart文件,是纯json样式的,需要写一个分析工具去分析,我的工程里XcodeZombieCodeAnalyzer(开源的)是一个通用的例子,可能需要针对自己具体情况做必要的改动。
@smileagainluo I是Include的意思,是说包含后面的路径作为Include的一部分,如果你要去掉I,就把整个I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1都去掉好了。只是不知道这样会不会报错,如果你引用C++的头文件。
@smileagainluo 这个错误和你当前的deployTarget有关系,假如你的deploytarget是10.1,那么cflags里面也是10.1即I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1 _-mios-version-min=10.1_ -Xclang -load -Xclang /opt/local/lib/clangplugin/libClangZombieCodePlugin.dylib -Xclang -add-plugin -Xclang ClangZombieCodePlugin -Xclang -plugin-arg-ClangZombieCodePlugin -Xclang $SRCROOT
clang-3.9: error: invalid version number in '-miphoneos-version-min=10.1' 这个错误和你deploytarget有关系,-mios-version-min=10.1这里设置好就可以的,你可以参考下我写的。
@loveace json文件的生成是在编译过程中产生的,工程文件的开始和结束会基于pre/post action对json/.jsonpart文件做处理,是两个shell文件,位于analyzer里面,不妨看看。
@snakeD 第一个问题是说符号没找到,命令行编译的时候是不是没有链接ZombieCodeUtil.cpp这个文件呢?setFilename这个符号是在那个文件下的。
@loveace jsonpart的删除是在shell里操作的,我的逻辑是利用pre/post去运行Analyzer,使用完毕就删除jsonpart文件,你如果要看其中的内容,可以修改shell里面关于移除jsonpart的逻辑。