vim 从命令列撷取XCode的建置旗标

f45qwnt8  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(114)

我正在使用X-Code 4.2,希望使用VIM编辑器和clang-complete vim脚本来完成代码完成。如果我手动设置clang-complete配置来反映我的X-Code项目中的设置,效果会很好。为了使这项工作更顺利,我想做以下事情。

get_compile_options some_src.m

其中some_src.m是我的XCode项目中的一个有效源文件。get_compile_options的输出应该是XCode将用于将其构建到目标文件中的所有构建标志。关于如何实现这一点,有什么想法吗?

ohfgkhjo

ohfgkhjo1#

AFAIK没有一个很好方法来实现这一点,但是您可以在Xcode项目中添加特殊的目标,禁用dsym生成、资源复制添加用户定义选项'CC=〈your custom compiler〉',其中'〈your custom compiler〉'将是记录传入其中参数脚本'some_src.m'将紧跟在'-c'选项之后这样你就可以通过编译你的特殊目标来收集每个文件的选项。我已经成功地在clang的补丁版本中使用了这种方法。

m528fe3b

m528fe3b2#

我想我找到了更好的解决方案,您可以使用xctool
您可以将path传递给xcode项目、scheme(target),并使用compile命令获取json。

$1 = path to .xcodeproj file
$2 = scheme (target) 
$3 = path for generated json

# !/bin/bash

XCTOOL_DIR=/Documents/xctool-master #the location of your xctool
$XCTOOL_DIR/xctool.sh -workspace "$1"/project.xcworkspace \
-scheme "$2" \
-reporter json-compilation-database:"$3"/compile_commands.json build

compile_commands.json是json compilation database,其格式为:

[
  { "directory": "/home/user/llvm/build",
    "command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
    "file": "file.cc" },
  ...
]

你可以用普通的json解析器来解析它,也可以用其他的reporter

相关问题