前提
安装(必需)
qt-opensource-windows-x86-5.12.8.exe。
双击文件安装,安装时断开网络,否则需要注册账号,安装时按照下图进行勾选
安装Qt时会带一个Qt Creator。我们一般还会单独安装一个新的Qt Creator(如上Qt安装包的同一目录下,qt-creator-opensource-windows-x86_64-x.x.x.exe)。
构建工具(Kits)设置(必需)
注意要选择MSVC2017,其他主要是红色箭头标记的位置。从旧版本升级后,很可能出错,需再次检查下。
如果出现无法检测到调试器(即只显示none)的情况,则需要进入windows的应用与功能将Windows Software Development Kits删除掉然后重新使用
\192.168.3.223\sharedrepo\1.Software\开发环境\SDKSETUP.exe重新安装。记得勾选上所有安装内容。
如果通过上述操作仍然无法检测调试器,就需要手动配置,点击“Manage”选择cdb.exe所在路径。
如果出现编译器无法识别的情况,可能是由于没有安装visual studio造成的,安装后重启软件即可检测到编译器。
如果出现“调试器:”那一行完全消失的情况,“帮助”-》“关于插件”,在“Filter”栏中输入“debug”,选中即可。
如果出现”Qt version”那一行为None的情况,切换到Kits>Qt Versions,点击Link with Qt…, 然后正确配置好Qt的安装路径(如C:\Qt\Qt5.12.8),点击OK即可自动检测到Qt。
创建类的文件名(必需)
《工具》《选项》《C++》《文件命名》,取消选中《Lower case file names》
语法高亮颜色(黑色主题,强烈建议)
将文件dark_copy.xml
放于 C:\Users\user_name\AppData\Roaming\QtProject\qtcreator\styles
中,路径改为本机用户名dark_copy.xml
- 《工具》《选项》《环境》《Interface》中Theme改为Dark,点击《OK》,重启Creator
《工具》《选项》《文本编辑器》《字体和颜色》,Color Theme选择Dark (LiXi)
代码格式化(必需)
改进可读性、及时发现部分错误、减少冲突的可能性。
安装共享文件夹1.Software\工具软件\LLVM-x.x.x-win64.exe
- 《帮助》《关于插件》,Filter里输入bea,选中Beautifier,点击《OK》,重启Creator
- 《工具》《选项》《Beautifier》《Clang Format》
《Clang Format Command》若没有正确发现,选择clang-format.exe的路径,如C:\Program Files\LLVM\bin\clang-format.exe
选择《Use customized style》,点击《Add》,输入下述配置(参见)BasedOnStyle: Google IndentWidth: 4
Language: Cpp AccessModifierOffset: -4
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
BreakBeforeBraces: Custom
BraceWrapping:
AfterFunction: true
AfterCaseLabel: true
AfterClass: true
AfterStruct: true
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ColumnLimit: 100
DerivePointerAlignment: false
IndentCaseLabels: false
SortIncludes: false
SpacesBeforeTrailingComments: 1
Standard: Cpp11
- 《工具》《选项》《环境》《键盘》,Filter里输入form,选择Clang Format下的FormatAtCursor,点击《Record》,按下Alt+Shift+F,点击《OK》
对于不应该格式化的罕见情况,可指定: |
// clang-format off
// special codes shouldn't be formatted
// clang-format on
| | :—- |
之后就可以通过Alt+Shift+F来格式化选中的代码
不编辑外部来源的代码(如Property库)时,打开“自动格式化”
默认build文件夹(必需)
《工具》《选项》《构建和运行》,打开《概要》标签页,修改《Default build directory》为
D:/projects_build/%{CurrentProject:Name}_build |
---|
文档工具Doxygen(可选)
安装
- 下载插件,放入C:\Qt\qtcreator-x.x.x\lib\qtcreator\plugins(正在使用的版本)。插件项目地址:https://github.com/fpoussin/qtcreator-doxygen/releases
- 打开Qt Creator,《帮助》《关于插件》,Filter里输入doxy,选中Doxygen,重启Creator
- 共享文件夹3rd parties中:复制doxygen.exe到C:\Program Files\doxygen\bin\;解压graphviz-2.38.zip到本地,把其bin目录加到PATH中。(按理说修改Doxyfile中的DOT_PATH即可,但实际不行)
《工具》《选项》《Doxygen》,Doxygen command填入C:\Program Files\doxygen\bin\doxygen.exe
使用
配置:参考Mech_Vision项目路径下的Doxyfile文件,其修改了下述参数
CREATE_SUBDIRS = YES
BUILTIN_STL_SUPPORT = YES
HAVE_DOT = YES
DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
FILE_PATTERNS = .cpp .h
RECURSIVE = YES
INPUT = Vision
- 《工具》《Doxygen》,点击Build Doxygen Documentation,即可根据代码的注释生成文档
把Qt加入到系统PATH(必需)
左下角Cortana那里,输入path,回车。
在环境变量的PATH里加入:C:\Qt\Qt5.12.8\5.12.8\msvc2017_64\bin,如升级自旧的Qt,则用此行取代旧的路径
注意PATH里不要出现用到Qt库的软件路径,否则很可能运行时使用错误的Qt版本。如果发现Qt版本不对,cmd里输入where Qt5Core.dll
,看其是否错误。使用#pragma once、类文件名不自动小写(必需)
设置Qt代码路径(建议)
在Debug时,可跳转到对应的Qt源码。
开关插件(建议)
Qt Creator默认打开的插件中,很多我们目前用不上,应该关闭。如下图,折叠表示全部开启或全部关闭。
运行Path配置(建议)
Refactoring
http://doc.qt.io/qtcreator/creator-editor-refactoring.html
Clang Code Model
选项 → C++ → Code Model → Diagnostic Configuration。创建mmind条目(选择一个条目如“Build-system warnings”,点“Copy…”,命名为mmind),填入:-Wall -Wextra -Wno-c++98-compat -Wno-global-constructors -Wno-exit-time-destructors -Wno-shadow-field-in-constructor -Wno-double-promotion -Wno-sign-compare -Wno-sign-conversion -Wno-c++98-compat-pedantic
点Ok,外面选择mmind。
Clang-Tidy and Clazy
需更新到Qt Creator 4.13.0或以上。否则由于内嵌Clang版本过低(MSVC需Clang≥9.0,之前是8.0),无法使用。
选项 → 分析器 → Clang Tools → Diagnostic Configuration。创建mmind条目(同上)。
如下。随着Qt Creator版本不同,标签页的名称可能不同,请自行对应。
Clang Warnings,同上(Clang Code Model的)。
Clang-Tidy Checkes,点“Edit Checks as String…”,填入:
-,bugprone-assert-side-effect,bugprone-branch-clone,bugprone-copy-constructor-init,bugprone-fold-init-type,bugprone-forwarding-reference-overload,bugprone-inaccurate-erase,bugprone-infinite-loop,bugprone-integer-division,bugprone-lambda-function-name,bugprone-misplaced-widening-cast,bugprone-move-forwarding-reference,bugprone-parent-virtual-call,bugprone-signed-char-misuse,bugprone-sizeof-,bugprone-string-integer-assignment,bugprone-suspicious-enum-usage,bugprone-suspicious-memset-usage,bugprone-swapped-arguments,bugprone-throw-keyword-missing,bugprone-too-small-loop-variable,bugprone-undefined-memory-manipulation,bugprone-undelegated-constructor,bugprone-unhandled-self-assignment,bugprone-unused-,bugprone-use-after-move,bugprone-virtual-near-miss,cppcoreguidelines-init-variables,cppcoreguidelines-macro-usage,cppcoreguidelines-pro-type-cstyle-cast,cppcoreguidelines-pro-type-member-init,cppcoreguidelines-slicing,misc-definitions-in-headers,misc-redundant-expression,misc-throw-by-value-catch-by-reference,misc-unconventional-assign-operator,modernize-deprecated-headers,modernize-loop-convert,modernize-make-,modernize-return-braced-init-list,modernize-use-auto,modernize-use-bool-literals,modernize-use-default-member-init,modernize-use-emplace,modernize-use-equals-,modernize-use-nullptr,modernize-use-override,modernize-use-transparent-functors,performance-faster-string-find,performance-for-range-copy,performance-implicit-conversion-in-loop,performance-inefficient-,performance-move-,performance-noexcept-move-constructor,performance-trivially-destructible,performance-type-promotion-in-math-fn,performance-unnecessary-,readability-const-return-type,readability-container-size-empty,readability-convert-member-functions-to-static,readability-delete-null-pointer,readability-deleted-default,readability-else-after-return,readability-inconsistent-declaration-parameter-name,readability-isolate-declaration,readability-make-member-function-const,readability-misleading-indentation,readability-non-const-parameter,readability-redundant-control-flow,readability-redundant-declaration,readability-redundant-member-init,readability-redundant-smartptr-get,readability-redundant-string-,readability-simplify-boolean-expr,readability-static-
Clazy Checkes(随着Qt Creator版本不同,有些条目可能不存在):
- 全选Level 1,然后取消勾选:
- non-pod-global-static
- qproperty-without-notify
- Level 0已经默认全选(由于全选Level 1),取消勾选:
- connect-by-name
- fully-qualified-moc-types
- Level 2,勾选:
- base-class-event
- function-args-by-ref
- global-const-char-pointer
- old-style-connect
- qstring-allocations
- virtual-call-ctor
- Manual Level,勾选:
- container-inside-loop
- detaching-member
- inefficient-qlist
分析检查代码
尽量在Debug模式下分析(Release下Qt Creator也会提示尽量切换到Debug)。
Analyze → Clang-Tidy and Clazy…,然后选择要检查的文件并分析。默认分析前会先构建(预期的行为),所以有可能时间较长。
Cppcheck
为什么有了clang还需要安装此工具:
目前不清楚为什么clang配置的一些检查没有生效(如implicit fall through, unused variable) 。
安装操作如下:
安装\192.168.10.223\sharedrepo\1.Software\工具软件\cppcheck-2.4-x64-Setup.msi,使用默认路径。
在Qt Creator里:
1. 《帮助》-《关于插件》,在过滤器中填写Cppcheck,勾选此插件,并重启Qt Creator。
2. 确认《工具》-《选项》-《分析器》- CppCheck - Binary选项中确认cppcheck.exe的路径有效(其值与安装的exe路径是一致的)
即可对代码进行静态分析。