【问题标题】:Extract build flags from XCode from the command line从命令行从 XCode 中提取构建标志
【发布时间】:2011-11-20 09:28:56
【问题描述】:

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

【问题讨论】:

    标签: xcode vim clang compiler-flags


    【解决方案1】:

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

    【讨论】:

    • 您能详细解释一下吗?我怎样才能在 xcode 5 中做到这一点?当我这样做时,Xcode 意外崩溃。
    【解决方案2】:

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

    您可以将路径传递给您的 xcode 项目、方案(目标),并使用编译命令获取 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

    【讨论】:

    • 它是构建项目还是只是提取标志?
    猜你喜欢
    • 2010-09-27
    • 2018-01-22
    • 2012-01-21
    • 2011-11-29
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2012-01-21
    • 2022-01-24
    相关资源
    最近更新 更多