syntastic vim 플러그인에 C ++ 11 지원을 추가하는 방법은 무엇입니까?
내 C ++ 11 프로젝트에서 syntastic을 사용하고 있습니다. 내가 vim에서 편집하고 저장할 때 (: w) syntastic 플러그인은 모든 이니셜 라이저 목록 {}과 명확하게 C ++ 11 기능이 누락 된 각 루프에 대해 오류를 제공합니다.
병원체를 사용하여 syntastic을 설치했습니다.
다음은 이니셜 라이저 목록과 각 루프에서 발생하는 오류의 두 가지 예입니다 (모두 잘 컴파일되는 C ++ 11).
syntastic의 C ++ linter (구문 검사기)에는 .vimrc에 설정할 수있는 많은 옵션이 있습니다 (불행히도 .clang_complete 솔루션과 같이 프로젝트별로 지정 되었으면합니다).
c ++ 11 표준을 활성화하고 libc ++ 라이브러리를 clang (내 프로젝트에서 사용하는 것)과 함께 사용하려면 ~ / .vimrc에 다음 줄을 추가했습니다.
let g:syntastic_cpp_compiler = 'clang++'
let g:syntastic_cpp_compiler_options = ' -std=c++11 -stdlib=libc++'
이제 아름답게 작동합니다.
나는 같은 문제에 직면하고 있었고 C ++ 98과 C ++ 11을 별도로 처리해야한다고 주장합니다 . 아래는 내 솔루션입니다.
bundle / syntastic / syntax_checkers / cpp11 / 아래에 gcc.vim 이라는 파일을 만들고 복사합니다.
"============================================================================
"File: cpp11.vim
"Description: Syntax checking plugin for syntastic.vim
"Maintainer: Gregor Uhlenheuer <kongo2002 at gmail dot com>
"License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
if exists('g:loaded_syntastic_cpp11_gcc_checker')
finish
endif
let g:loaded_syntastic_cpp11_gcc_checker = 1
if !exists('g:syntastic_cpp11_compiler')
let g:syntastic_cpp11_compiler = executable('g++') ? 'g++' : 'clang++'
endif
if !exists('g:syntastic_cpp11_compiler_options')
let g:syntastic_cpp11_compiler_options = '-std=c++11'
endif
let s:save_cpo = &cpo
set cpo&vim
function! SyntaxCheckers_cpp11_gcc_IsAvailable() dict
return executable(expand(g:syntastic_cpp11_compiler))
endfunction
function! SyntaxCheckers_cpp11_gcc_GetLocList() dict
return syntastic#c#GetLocList('cpp11', 'gcc', {
\ 'errorformat':
\ '%-G%f:%s:,' .
\ '%f:%l:%c: %trror: %m,' .
\ '%f:%l:%c: %tarning: %m,' .
\ '%f:%l:%c: %m,'.
\ '%f:%l: %trror: %m,'.
\ '%f:%l: %tarning: %m,'.
\ '%f:%l: %m',
\ 'main_flags': '-x c++ -fsyntax-only',
\ 'header_flags': '-x c++',
\ 'header_names': '\m\.\(h\|hpp\|hh\)$' })
endfunction
call g:SyntasticRegistry.CreateAndRegisterChecker({
\ 'filetype': 'cpp11',
\ 'name': 'gcc' })
let &cpo = s:save_cpo
unlet s:save_cpo
" vim: set et sts=4 sw=4:
그러면 vim에서 & filetype == 'cpp11'인 파일에 대해 gcc 검사기를 사용할 수 있습니다 (다른 검사기를 원하십니까? 내가 직접했던 것과 유사한 작업을 수행 할 수 있음). vim에서 파일을 cpp11 파일 형식으로 자동 인식하는 방법은 무엇입니까? 다음 내용 으로 ~ / .vim / ftdetect / 아래에 ext_detect.vim 이라는 파일을 만듭니다 .
au bufnewfile,bufread *.cpp11 set ft=cpp11
au bufnewfile,bufread *.cppx set ft=cpp11
by this way, you can process your *.cpp files as c++98 standard and *.cpp11 or *.cppx as c++11 standard separately, not only syntax checking, but also syntax highlighting (if you need cpp11 syntax highlighting support, this vim plugin will be useful, although not perfect).
It has project specific options, like the .clang_complete solution
You can set path to files g:syntastic_cpp_config_file and g:syntastic_c_config_file. The default is .syntastic_cpp_config for C++. Put file in root of the project and compiler options inside it (one for each line)
for details
If your using YouCompleteMe in addition to Syntastic you need to change your .ycm_extra_conf.py file. Sepcifically change '-Wc++98-compat' to '-Wnoc++98-compat'.
compile_commands.json 파일을 사용하고 있기 때문에 Syntastic 설정을 직접 변경할 필요가 없었습니다.
여기를 통해 .
YouCompleteMe를 사용하는 경우 '.ycm_extra_conf.py'를 변경해야합니다. 플래그 만 변경 :( 파일 경로 ~ / .vim / bundle / YouCompleteMe / third_party / ycmd / cpp / ycm / .ycm_extra_conf.py);
flags = [
'-std=c++11',
'-O0',
'-Werror',
'-Weverything',
'-Wno-documentation',
'-Wno-deprecated-declarations',
'-Wno-disabled-macro-expansion',
'-Wno-float-equal',
'-Wno-c++98-compat',
'-Wno-c++98-compat-pedantic',
'-Wno-global-constructors',
'-Wno-exit-time-destructors',
'-Wno-missing-prototypes',
'-Wno-padded',
'-Wno-old-style-cast',
'-Wno-weak-vtables',
'-x',
'c++',
'-I',
'.',
'-isystem',
'/usr/include/',
]
참조 URL : https://stackoverflow.com/questions/18158772/how-to-add-c11-support-to-syntastic-vim-plugin
'programing' 카테고리의 다른 글
양식 데이터를 잃지 않고 현재 페이지를 다시로드하는 방법은 무엇입니까? (0) | 2021.01.19 |
---|---|
C ++ 구조의 이상한 동작 [1 부] (0) | 2021.01.19 |
`.queryset` 속성이 없거나`.get_queryset ()`메서드를 재정의하는 뷰에는 DjangoModelPermissions를 적용 할 수 없습니다. (0) | 2021.01.19 |
Flask에서 request.args는 무엇이며 어떻게 사용됩니까? (0) | 2021.01.19 |
Android Room Persistences 라이브러리 및 Kotlin (0) | 2021.01.19 |