zoukankan      html  css  js  c++  java
  • 使用VSCODE开发UE4

    完全可行,速度很快,智能提示、代码格式化、查找Symbol等等都不比VS+Visual AssistX 差。

    准备

    1. 打开编辑器的Editor Preferences>Source Code,选择VSCode
    2. 在工程的uproject文件上右键>Generate Visual Studio Project,就会生成一个workspace文件,双击即可打开visual studio code. 同时生成的还有一个.vscode文件夹。

    配置VSCode

    1. VSCode需要的插件网上众说纷纭,实际证明,只需要这三个就够了:

    什么clang-format之类的完全不需要,因为c/c++里面自带了clang-format.

    打开设置(Ctrl+,或者File>Preferences>Settings)
    选择Extensions>C/C++

    C_Cpp:Autocomplete    Default
    C_Cpp:Clang_format_fallback Style   Visual Studio(这里是防止Clang_format_style填写的是file,而系统找不到.clang-format文件时候的情况)
    C_Cpp:Clang_format_path          不需要填写(默认配置好了)
    C_Cpp:Clang_format_style          Visual Studio(或者LLVM)
    C_Cpp>Default: Cpp Standard        c++11
    C_Cpp:Workspace Symbols          All
    

    最后这条最重要,否则查找Symbol时候就无法识别到UE源码中的代码了。

    注意上面的两个format 可以取值Visual Studio, LLVM, Google, WebKit等。推荐使用WebKit

    如果追求完美,可以这样设置

    官方C/C++插件自带的clang-format版本是6.0,所以设置相关选项时要注意参考的文档版本。
    可以自行下载最新的clang-format文件,目前最新版本是7.0。
    下载位置:下载
    选择编译好的win64版本。

    安装好以后只需要找到里面的clang-format.exe 拷贝到别处(例如C:/),其余部分就可以卸载了。

    然后将C_Cpp:Clang_format_path设置为刚下载的clang-format.exe路径:
    "C_Cpp.clang_format_path": "C:\clang-format.exe",
    C_Cpp:Clang_format_style设置为file,表示从工作目录或上级文件夹中寻找.clang-format配置文件。
    在工作目录中创建一个名称为.clang-format的文件
    windows系统中无法创建名字以.开头的文件,可以这样创建:打开cmd,输入echo >.clang-format ,回车即可创建。

    内容用下方内容粘贴

    这里有一个专门为UE4配置好的.clang-format文件内容:

    ---
    Language:        Cpp
    AccessModifierOffset: -4
    AlignAfterOpenBracket: Align
    AlignConsecutiveAssignments: false
    AlignConsecutiveDeclarations: false
    AlignEscapedNewlines: Left
    AlignOperands:   true
    AlignTrailingComments: true
    AllowAllParametersOfDeclarationOnNextLine: true
    AllowShortBlocksOnASingleLine: true
    AllowShortCaseLabelsOnASingleLine: true
    AllowShortFunctionsOnASingleLine: None
    AllowShortIfStatementsOnASingleLine: false
    AllowShortLoopsOnASingleLine: false
    AlwaysBreakAfterReturnType: None
    AlwaysBreakBeforeMultilineStrings: false
    AlwaysBreakTemplateDeclarations: Yes
    BinPackArguments: false
    BinPackParameters: false
    BreakBeforeBinaryOperators: None
    BreakBeforeBraces: Allman
    BreakBeforeInheritanceComma: false
    BreakInheritanceList: AfterColon
    BreakBeforeTernaryOperators: true
    BreakConstructorInitializersBeforeComma: false
    BreakConstructorInitializers: AfterColon
    BreakAfterJavaFieldAnnotations: false
    BreakStringLiterals: true
    ColumnLimit:     0
    CommentPragmas:  '^ IWYU pragma:'
    CompactNamespaces: true
    ConstructorInitializerAllOnOneLineOrOnePerLine: true
    ConstructorInitializerIndentWidth: 4
    ContinuationIndentWidth: 0
    Cpp11BracedListStyle: true
    DerivePointerAlignment: true
    DisableFormat:   false
    FixNamespaceComments: true
    ForEachMacros:   
      - for
    IncludeBlocks:   Regroup
    IncludeCategories: 
      - Regex:           '.*.generated.h'
        Priority:        100
      - Regex:           '.*(PCH).*'
        Priority:        -1
      - Regex:           '".*"'
        Priority:        1
      - Regex:           '^<.*.(h)>'
        Priority:        3
      - Regex:           '^<.*>'
        Priority:        4
    IncludeIsMainRegex: '([-_](test|unittest))?$'
    IndentCaseLabels: true
    IndentPPDirectives: None
    IndentWidth:     4
    IndentWrappedFunctionNames: false
    JavaScriptQuotes: Leave
    JavaScriptWrapImports: true
    KeepEmptyLinesAtTheStartOfBlocks: false
    MacroBlockBegin: ''
    MacroBlockEnd:   ''
    MaxEmptyLinesToKeep: 2
    NamespaceIndentation: None
    ObjCBinPackProtocolList: Never
    ObjCBlockIndentWidth: 2
    ObjCSpaceAfterProperty: false
    ObjCSpaceBeforeProtocolList: true
    PenaltyBreakAssignment: 2
    PenaltyBreakBeforeFirstCallParameter: 1
    PenaltyBreakComment: 300
    PenaltyBreakFirstLessLess: 120
    PenaltyBreakString: 1000
    PenaltyBreakTemplateDeclaration: 10
    PenaltyExcessCharacter: 1000000
    PenaltyReturnTypeOnItsOwnLine: 200
    PointerAlignment: Left
    RawStringFormats: 
      - Language:        Cpp
        Delimiters:      
          - cc
          - CC
          - cpp
          - Cpp
          - CPP
          - 'c++'
          - 'C++'
        CanonicalDelimiter: ''
        BasedOnStyle:    google
      - Language:        TextProto
        Delimiters:      
          - pb
          - PB
          - proto
          - PROTO
        EnclosingFunctions: 
          - EqualsProto
          - EquivToProto
          - PARSE_PARTIAL_TEXT_PROTO
          - PARSE_TEST_PROTO
          - PARSE_TEXT_PROTO
          - ParseTextOrDie
          - ParseTextProtoOrDie
        CanonicalDelimiter: ''
    ReflowComments:  true
    SortIncludes:    true
    SortUsingDeclarations: true
    SpaceAfterCStyleCast: true
    SpaceAfterTemplateKeyword: true
    SpaceBeforeAssignmentOperators: true
    SpaceBeforeCpp11BracedList: false
    SpaceBeforeCtorInitializerColon: true
    SpaceBeforeInheritanceColon: true
    SpaceBeforeParens: ControlStatements
    SpaceBeforeRangeBasedForLoopColon: true
    SpaceInEmptyParentheses: false
    SpacesBeforeTrailingComments: 4
    SpacesInAngles:  false
    SpacesInContainerLiterals: true
    SpacesInCStyleCastParentheses: false
    SpacesInParentheses: false
    SpacesInSquareBrackets: false
    Standard:        Auto
    TabWidth:        4
    UseTab:          Always
    ...
    
    

    自动格式化

    Text Editor> Formatting
    Format On Save和Format On Type都打勾。

    常用快捷操作

    打开Symbol: 按Ctrl键并鼠标左键点击Symbol
    查找Symbol: 选择Symbol并Ctrl+T (VAssist中的Alt+Shift+S)
    转到定义: F12
    转到声明: Ctrl+F12
    重命名: Ctrl+F2
    切换头/源文件: Alt+O (VAssist快捷键一样)
    快速打开文件: Ctrl+P (VAssist中的Alt+Shift+O)

  • 相关阅读:
    minSdkVersion maxSdkVersion targetSdkVersion target 的区别
    C++实现DNS域名解析
    2018-2019-2 《网络对抗技术》Exp9 Web安全基础 20165114
    2019年课程设计本小组第一周——20165114
    2018-2019-2 20165114《网络对抗技术》 Exp 8 Web基础
    2018-2019-2 20165114《网络对抗技术》Exp7 网络欺诈防范
    2018-2019-2 20165114《网络对抗技术》Exp6 信息收集与漏洞扫描
    2018-2019-2 20165114《网络对抗技术》Exp5 MSF基础应用
    2018-2019-2 20165114《网络对抗技术》Exp4 恶意代码分析
    2018-2019-2 20165114《网络对抗技术》Exp3 免杀原理与实践
  • 原文地址:https://www.cnblogs.com/AnKen/p/10654678.html
Copyright © 2011-2022 走看看