cmake-ide是一个包装,可在CMAKE项目的EMAC上启用IDE般的功能。只要汇编数据库生成频段外,它还支持非策略项目。其中包括自动完成和flly语法检查,其中包括具有最小配置的CMAKE项目的EMACS中。它使用其他包装来进行繁重的举重,结合了:
cmake-ide将为已安装的相关软件包设置变量并调用功能。
它通过在Emacs中运行CMAKE来工作,以获取必要的编译器标志以传递到其他工具。由于所有依赖项均在CMAKE脚本中指定,因此无需维护Emacs的并行依赖性跟踪系统。只是问Cmake。
auto-complete-clang , flycheck和其他其他变量。几乎不需要任何配置。cmake-ide-build-dir 。cmake-ide-delete-file可让您在删除文件时具有相同的便利性。我无法找到更好的方法。显然,简单地删除文件意味着必须再次手动运行CMAKE才能在要编译的文件列表中注册更改。cmake-ide-build-dir ,则被认为是运行CMake的构建目录。此外,这将导致cmake-ide-compile在此处编译该项目。它会自动检测忍者并制作构建并相应地设置编译命令。可以通过设置cmake-compile-command变量来自定义使用的命令。cmake-ide可以使用clang的RTAG来查找定义。如果(require 'rtags)在cmake-ide-setup之前调用,则它将自动启动RTAGS服务器( rdm )并调用rc -J ,以索引0-Config的项目文件“跳转到定义”,其他所有RTAGS都提供。这仅在rdm和rc以及在系统路径中或cmake-ide-rdm-executable和cmake-ide-rc-executable均可正确定制时起作用。 cmake-ide可以自动为您创建构建目录 - 在系统的TMP-Directory或cmake-ide-build-pool-dir (如果设置)下。默认情况下,所有自动创建的构建目录(无论在何处创建)都将具有临时和唯一的名称,这些名称将随着每个新会话而变化,因此不可重复使用。但是,您可以通过设置cmake-ide-build-pool-use-persistent-naming使用可重复的命名方案,该方案基于项目的路径,只要项目的路径相同,就不会改变。这样,您可以重复使用构建目录。
通过使用cmake-ide-build-pool-dir和cmake-ide-build-pool-use-persistent-naming ,您可以完全消除使用目录本地变量(例如)为每个项目配置每个项目的构建目录的需要(例如)。
使用.dir-locals.el设置cmake-ide-project-dir和cmake-ide-build-dir变量(使用绝对路径)。
.dir-locals.el:((nil。(((((cmake-ide-build-dir)
如果一个称为compile_commands.json的文件存在于cmake-ide-build-dir中,则它将与CMAKE项目一样起作用。熊(https://github.com/rizsotto/bear)可用于从make命令中生成compile_commands.json。
从MELPA或MELPA稳定的安装:
M-x package-install RET cmake-ide.
将其添加到您的.emacs / init.el :
(require 'rtags) ;; optional, must have rtags installed
(cmake-ide-setup)
如果设置了cmake-ide-flags-c或cmake-ide-flags-c++ ,则将它们添加到ac-clang-flags和company-clang-arguments中。这些变量应设置。 Particularly, they should contain the system include paths (eg '("-I/usr/include/c++/4.9.1" "...") . For a system with gcc, you can get this information by running gcc -v -xc++ /dev/null -fsyntax-only (it's the same prerequisite for auto-complete-clang to work, since that's how clang itself works).
而且...就是这样。它通过调用CMAKE并用编译器标志来解析所得的JSON文件来起作用。将cmake-ide-build-dir设置为构建项目的位置,您不必再次手动调用CMake(除了首次指定选项外)。最好使用目录本地变量完成。