首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于单个文件非交互式c++程序,在同一个缓冲区中打印程序的编译输出和程序(运行时)输出。

对于单个文件非交互式c++程序,在同一个缓冲区中打印程序的编译输出和程序(运行时)输出。
EN

Stack Overflow用户
提问于 2013-11-15 14:04:59
回答 2查看 242关注 0票数 0

如何编译单个文件c++程序,打印输出以编译缓冲区,如果编译成功则运行c++可执行文件,并附加c++可执行文件的输出以编译输出。

下面的elisp代码可以编译与缓冲区名称相同的c++程序。现在,如何运行可执行表的输出并将其附加到编译缓冲区

代码语言:javascript
运行
复制
(defun cpp-single-file-compile ()
  (interactive)
  (save-buffer)
  (compile
   (concat "g++ -g " (buffer-file-name) " -o " (file-name-sans-extension (buffer-file-name)))))

(add-hook 'c++-mode-hook (lambda () (local-set-key "\C-c\C-c" 'cpp-single-file-compile)))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-18 06:06:11

解决办法很简单。编译后执行

代码语言:javascript
运行
复制
(defun cpp-single-file-compile ()
  (interactive)
  (save-buffer)
  (compile
   (concat "g++ -g " (buffer-file-name) " -o " (file-name-sans-extension (buffer-file-name))
       " && " (file-name-sans-extension (buffer-file-name)) ".exe")))

(add-hook 'c++-mode-hook (lambda () (local-set-key "\C-c\C-c" 'cpp-single-file-compile)))
票数 0
EN

Stack Overflow用户

发布于 2013-11-15 14:20:23

此外,对于您的代码,我在hack-local-variables命令中有一个C-c C-c

代码语言:javascript
运行
复制
(defun compileCompileCommand ()
  "Compile current file."
  (interactive)
  (hack-local-variables)
  (unless file-local-variables-alist
    (setq compile-command (concat "g++ -g " (buffer-file-name) " -o " (file-name-sans-extension (buffer-file-name))
        " && " (file-name-sans-extension (buffer-file-name)) ".exe")))
    (compile compile-command))

(add-hook 'c-mode-common-hook '(lambda () 
                 (local-set-key (kbd "C-c C-c") 'compileCompileCommand)))

然后将局部变量添加到源文件中。示例:

代码语言:javascript
运行
复制
#include <iostream>

int main() {
    std::cout << "Test";

    return 0;
}

/*
Local Variables:
compile-command: "g++ -g test.cc && ./a.exe"
End:
 */

因此,您可以根据每个文件决定您想要做什么。由于compile-command的原因,下一次编译时会考虑hack-local-variables的更改。

产出如下:

代码语言:javascript
运行
复制
-*- mode: compilation; default-directory: "/c/temp/" -*-
Compilation started at Fri Nov 15 15:22:34

g++ -g test.cc && ./a.exe
Test
Compilation finished at Fri Nov 15 15:22:34

编辑:有时需要链接一些额外的库或指定一些额外的包含路径。因此,我不能接受Talespin_Kit的答案作为一个完整的解决方案。我认为在上面编辑的版本中给出的组合更好。如果给定局部变量,则使用原始的compile-command,否则将使用自动生成的compile-command。注意,还可以使用assq检查compile-command是否是局部变量的成员。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20002849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档