有效地将SublimeText与SublimeClang用于CMake / C项目

前端之家收集整理的这篇文章主要介绍了有效地将SublimeText与SublimeClang用于CMake / C项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在试图用SublimeText2玩一段时间.虽然在 Python中很容易使用 Python,但是使用C更加棘手.我可以通过复制和修改现有的Makefile脚本来设置一个CMake构建脚本,但是有许多事情在CMake支持的IDE(如Eclipse CDT)中不起作用. SublimeText 2似乎不了解一个单独的构建目录的概念,它也不能让我通过SublimeClang自动完成,如果我包括参考在CMake中添加的目录的库. SublimeClang不断抱怨说找不到库,当我尝试#include时,甚至不能在标准的STL头文件名(例如算法)上给我自动完成.如果有人想出了一条管道,我将不得不听到.

我以前在更通用的使用相关论坛中提出了这个问题,在那里我没有得到任何回应,这就是为什么我想把它发布在这里.

解决方法

我使用Sublime Text 2与CMake和SublimeClang.我也使用SublimeGDB.我的构建目录在[项目根目录] / build下.看看我的项目文件,看看它是否可以帮助你:
{
    "folders":
    [
        {
            "path": "."
        }
    ],"build_systems":
    [
        {
            "name": "Build","cmd": [ "make","-C","build" ],"file_regex": "/([^/:]+):(\\d+):(\\d+): "
        }
    ],"settings":
    {
        "sublimegdb_commandline": "gdb --interpreter=mi myapp","sublimegdb_workingdir": "build","sublimeclang_options" :
        [
            "-Wno-reorder"
        ],"sublimeclang_options_script": "${project_path:scripts/compileflags.rb} ${project_path:build}"
    }
}

compileflags.rbscript用于在CMake构建树中搜索flags.make文件,CMake保留其编译标志.这些标志是必需的,所以SublimeClang知道在哪里找到你的包括.

这是脚本,位于脚本/:

#!/usr/bin/env ruby

# Searches for a flags.make in a CMake build tree and prints the compile flags.

def search_dir(dir,&block)
    Dir.foreach(dir) do |filename|
        next if (filename == ".") || (filename == "..")
        path ="#{dir}/#{filename}"
        if File.directory?(path)
            search_dir(path,&block)
        else
            search_file(path,&block)
        end
    end
end

def search_file(filename)
    return if File.basename(filename) != "flags.make"

    File.open(filename) do |io|
        io.read.scan(/[a-zA-Z]+_(?:FLAGS|DEFINES)\s*=\s*(.*)$/) do |match|
            yield(match.first.split(/\s+/))
        end
    end
end

root = ARGV.empty? ? Dir.pwd : ARGV[0]
params = to_enum(:search_dir,root).reduce { |a,b| a | b }
puts params

猜你在找的C&C++相关文章