从命令行从XCode中提取构建标志

时间:2011-11-20 09:28:56

标签: xcode vim clang compiler-flags

我正在使用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用于将其构建到目标文件中的所有构建标志。关于如何实现这一点的任何想法。

2 个答案:

答案 0 :(得分:2)

AFAIK没有公平的方法来实现这一目标,但你可以在Xcode项目中添加特殊目标,禁用dsym生成,资源复制,添加用户定义选项'CC =< your custom compiler>'其中'<您的自定义编译器>'将是您的脚本,记录传递给它的参数。 'some_src.m'将在'-c'选项后面。这样,您将通过编译特殊目标来收集每个文件的选项。 我已经成功地使用了这种方法和修补版本的clang。

答案 1 :(得分:1)

我认为我找到了更好的解决方案,您可以使用xctool

您可以将路径传递给xcode项目,scheme(目标),并使用编译命令获取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解析器解析它, 你也可以使用其他reporters

相关问题