首页 > 解决方案 > g++致命错误没有这样的文件或目录

问题描述

所以我使用gvim 编辑器在 C++ 中编程,但是当我.cpp在编辑器上打开一个文件然后输入:!g++ -std=C++17 file.cpp -o file我得到这个错误:见下面的附件:

C:\Windows\system32\cmd.exe /c(g++ -std=c++17 file.cpp - o file)
g++: error: file.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated

现在这与vim有关,还是与我的命令有关?

提前致谢。

标签: vimg++

解决方案


不幸的是,您似乎正在使用 gcc-mingw,它没有正确配置 gnumake (否则:let $CXXFLAGS='-std=c++17 -Wall -Werror'+make %<就足够了)。因此,您将手动执行一些操作。并且不要将参数拼错为 g++。忘了:!{compilername},这是我们 25 年前必须用 vi 做的事情。与 vi 不同,vim 允许集成编译。

" to do once
:let &makeprg='g++ -std=c++17 -Wall -Werror % -o %<'

" to execute each time to compile
:make
:copen

" to navigate the errors
:cc      " jump to error under cursor
:cnext   " jump to next error
:cprev   " jump to previous error
:cclose  " close the quickfix window

->:h quickfix

这不应该从错误的目录执行 g++。如果仍然如此,请运行:cd %:h.

执行应该与:./%.

如果您希望为此设置热键...

nnoremap <silent> <F7>   :<c-u>update<cr>:make<cr>
nnoremap <silent> <C-F5> :<c-u>./%<cr>

nnoremap <silent> <F3>   :<c-u>cnext<cr>
nnoremap <silent> <S-F3> :<c-u>cprev<cr>

仅在出现错误时自动打开 quickfix 窗口或仅在没有错误时执行结果需要更多的工作


推荐阅读