千家信息网

YouCompleteMe CLick_的配置方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"YouCompleteMe CLick_的配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"YouCompleteMe CLi
千家信息网最后更新 2026年11月03日YouCompleteMe CLick_的配置方法

这篇文章主要讲解了"YouCompleteMe CLick_的配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"YouCompleteMe CLick_的配置方法"吧!

import osimport ycm_core# These are the compilation flags that will be used in case there's no# compilation database set (by default, one is not set).# CHANGE THIS LIST OF FLAGS. YES, THIS IS THE DROID YOU HAVE BEEN LOOKING FOR.flags = ['-Wall','-Wextra',#'-Werror',#'-Wc++98-compat','-Wno-long-long','-Wno-variadic-macros','-fexceptions',# THIS IS IMPORTANT! Without a "-std=" flag, clang won't know which# language to use when compiling headers. So it will guess. Badly. So C++# headers will be compiled as C headers. You don't want that so ALWAYS specify# a "-std=".# For a C project, you would set this to something like 'c99' instead of# 'c++11'.#'-std=c99','-std=c++11','-stdlib=libc++',# ...and the same thing goes for the magic -x option which specifies the# language that the files to be compiled are written in. This is mostly# relevant for c++ headers.# For a C project, you would set this to 'c' instead of 'c++'.    '-x',    'c++',    '-I',    '.',    '-isystem',    '.',    '-I',    os.getcwd(),    '-I', os.getcwd() + "/..",#'-I', '/dev/shm/ClickHouse/libs/libpocoext/include',#'-I', '/dev/shm/ClickHouse/libs/libmysqlxx/include',#'-I', '/dev/shm/ClickHouse/libs/libdaemon/include',#'-I', '/dev/shm/ClickHouse/libs/libcommon/include',    '-isystem', '/usr/include/c++/7',    '-isystem', '/usr/include/c++/7/x86_64-pc-linux-gnu',    '-isystem', '/usr/include/c++/7/backward',    '-isystem', '/usr/include',    '-isystem', '/usr/include/c++/7',    '-isystem', '/usr/include/c++/7/bits',    '-isystem', '/dev/shm/src/include',    '-isystem'    '/usr/local/include',    '-isystem',    '/Library/Developer/CommandLineTools/usr/include',    '-isystem',    '/Library/Developer/CommandLineTools/usr/bin/../lib/c++/v1',] # Set this to the absolute path to the folder (NOT the file!) containing the# compile_commands.json file to use that instead of 'flags'. See here for# more details: http://clang.llvm.org/docs/JSONCompilationDatabase.html## Most projects will NOT need to set this to anything; you can just change the# 'flags' list of compilation flags. Notice that YCM itself uses that approach.compilation_database_folder = '' if os.path.exists( compilation_database_folder ):    database = ycm_core.CompilationDatabase( compilation_database_folder )else:    database = None SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] def DirectoryOfThisScript():    return os.path.dirname( os.path.abspath( __file__ ) ) def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):    if not working_directory:        return list( flags )    new_flags = []    make_next_absolute = False    path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]    for flag in flags:        new_flag = flag     if make_next_absolute:        make_next_absolute = False        if not flag.startswith( '/' ):            new_flag = os.path.join( working_directory, flag )     for path_flag in path_flags:        if flag == path_flag:            make_next_absolute = True            break         if flag.startswith( path_flag ):            path = flag[ len( path_flag ): ]            new_flag = path_flag + os.path.join( working_directory, path )            break     if new_flag:        new_flags.append( new_flag )    return new_flags def IsHeaderFile( filename ):    extension = os.path.splitext( filename )[ 1 ]    return extension in [ '.h', '.hxx', '.hpp', '.hh' ] def GetCompilationInfoForFile( filename ):  # The compilation_commands.json file generated by CMake does not have entries  # for header files. So we do our best by asking the db for flags for a  # corresponding source file, if any. If one exists, the flags for that file  # should be good enough.  if IsHeaderFile( filename ):    basename = os.path.splitext( filename )[ 0 ]    for extension in SOURCE_EXTENSIONS:      replacement_file = basename + extension      if os.path.exists( replacement_file ):        compilation_info = database.GetCompilationInfoForFile(          replacement_file )        if compilation_info.compiler_flags_:          return compilation_info    return None  return database.GetCompilationInfoForFile( filename ) def FlagsForFile( filename, **kwargs ):  if database:    # Bear in mind that compilation_info.compiler_flags_ does NOT return a    # python list, but a "list-like" StringVec object    compilation_info = GetCompilationInfoForFile( filename )    if not compilation_info:      return None     final_flags = MakeRelativePathsInFlagsAbsolute(      compilation_info.compiler_flags_,      compilation_info.compiler_working_dir_ )     # NOTE: This is just for YouCompleteMe; it's highly likely that your project    # does NOT need to remove the stdlib flag. DO NOT USE THIS IN YOUR    # ycm_extra_conf IF YOU'RE NOT 100% SURE YOU NEED IT.    #try:    #  final_flags.remove( '-stdlib=libc++' )    #except ValueError:    #  pass  else:    relative_to = DirectoryOfThisScript()    final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to )    #try:  #  pass    #final_flags.remove( '-stdlib=libc++' )  #except ValueError:  #  pass    #from hello import headers  #final_flags.extend(headers)  print(flags)   return {    'flags': final_flags,    'do_cache': True  }

感谢各位的阅读,以上就是"YouCompleteMe CLick_的配置方法"的内容了,经过本文的学习后,相信大家对YouCompleteMe CLick_的配置方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

方法 配置 学习 内容 就是 思路 情况 文章 更多 知识 知识点 篇文章 跟着 问题 c++ 实践 推送 研究 验证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网 科技公司 互联网络科技有限公司 上海互联网科技有限公司 互联网科技作文 四川狮子座互联网科技 重庆科技学院互联网 联恩商钥互联网科技有限公司 华脉科技工业互联网产品 玖二柒互联网科技公司待遇 温州喔噻互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 中国航天科技大学国际工业互联网 阿大互联网科技有限公司 互联网金融科技展 东莞新华互联网科技学校 群盈汇互联网科技有限公司 黑科技 体验场景 互联网大会 厦门江牛科技互联网 美国五大互联网科技公司市值多少 互联网的黑科技实验室 咖啡豆 广州淘业互联网络科技 哈尔滨大商圈互联网科技有限公司 西安纸贵互联网科技有限公司 互联网科技会 互联网科技的未来发展 花神(南京)互联网科技有限公司 洛阳昕诺飞互联网科技有限公司 互联网方面的科技前沿 互联网科技大佬云集
0