使用VSCode+CMake+Ninja进行C++或者Qt开发

本文详细介绍了如何在VSCode中配置CMake和Qt开发环境,包括安装必要的工具、安装插件、设置代码格式和工作区设置,以及调试项目的步骤。
摘要由CSDN通过智能技术生成

准备工具:

vscode  https://code.visualstudio.com/

cmake   https://cmake.org/download/

ninja    https://ninja-build.org/

qt   https://download.qt.io/archive/qt/ 使用cmake进行qt开发需要qt5.15.x及以后的版本(qt6.x.x)

编译器  安装 VisualStudio 或 其它编译器

安装vscode插件:

C/C++ Extension Pack

推荐主题插件:One Dark Pro

配置:

打开设置面板(ctrl+,),并打开settings.json:

将以下设置项粘贴到settings.json:

// editor
"editor.suggestSelection": "first",
"editor.minimap.enabled": false,
"editor.multiCursorModifier": "ctrlCmd",
"editor.formatOnType": true,
"editor.renderWhitespace": "none",
"editor.formatOnSaveMode": "modifications",
"editor.formatOnPaste": true,
"editor.fontSize": 15,
"editor.unicodeHighlight.nonBasicASCII": false,
"editor.unicodeHighlight.includeStrings": false,

// workbench
"workbench.startupEditor": "none",
"workbench.tree.indent": 25,
"workbench.colorTheme": "One Dark Pro",

// cmake settings 
"cmake.configureOnOpen": false,
"cmake.cmakePath": "D:/Qt/Tools/CMake_64/bin/cmake.exe",
"cmake.configureEnvironment": {
    "CMAKE_PREFIX_PATH": "D:/dev-space/qt5.15.6_msvc2019_64",
},
"cmake.generator": "Ninja",
"cmake.configureSettings": {
    "CMAKE_MAKE_PROGRAM": "D:/Qt/Tools/Ninja/ninja.exe",
},

// C++ Formatting
"C_Cpp.formatting": "vcFormat",
"C_Cpp.clang_format_style": "Visual Studio",
"C_Cpp.codeAnalysis.updateDelay": 500,
"C_Cpp.intelliSenseUpdateDelay": 500,
"C_Cpp.autocompleteAddParentheses": true,
"C_Cpp.vcFormat.newLine.beforeOpenBrace.lambda": "sameLine",
"C_Cpp.vcFormat.newLine.beforeOpenBrace.function": "newLine",
"C_Cpp.vcFormat.space.pointerReferenceAlignment": "right",
"C_Cpp.vcFormat.space.beforeBlockOpenBrace": true,
"C_Cpp.vcFormat.space.beforeEmptySquareBrackets": true,
"C_Cpp.vcFormat.space.afterKeywordsInControlFlowStatements": true,
"C_Cpp.vcFormat.space.afterComma": true,
"C_Cpp.default.browse.limitSymbolsToIncludedHeaders": true,
"C_Cpp.vcFormat.indent.multiLineRelativeTo": "statementBegin",
"C_Cpp.vcFormat.indent.lambdaBracesWhenParameter": false,
  • 设置cmake程序路径:

"cmake.cmakePath": "D:/Qt/Tools/CMake_64/bin/cmake.exe", 

  • 全局设置Qt安装目录(如果要进行Qt开发):

"cmake.configureEnvironment": {

        "CMAKE_PREFIX_PATH": "D:/dev-space/qt5.15.6_msvc2019_64",

    },

  • 设置Ninja:

"cmake.generator": "Ninja",

    "cmake.configureSettings": {

        "CMAKE_MAKE_PROGRAM": "D:/Qt/Tools/Ninja/ninja.exe",

    },

工程示例:

1、项目总工程文件,相当于visual studio 的解决方案文件(*.sln)

cmake_minimum_required(VERSION 3.14)
project(apitest-main VERSION 1.0.0)

add_subdirectory(apilib)
add_subdirectory(apitest)

2、子工程文件1,相当于visual studio 的工程文件(*.vcxproj),生成一个动态库文件

cmake_minimum_required(VERSION 3.14)
project(apilib VERSION 1.0.0)

include(../../cmake/qt-base.cmake)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/lib)

find_package(Qt5 COMPONENTS Gui)

include_directories(include)
file(GLOB apilibSrc 
    "include/*.h" "src/*.cpp"
)

add_definitions(-DAPITEST_LIB)

add_library(${TargetName} SHARED ${apilibSrc})

target_link_libraries(${TargetName} PRIVATE
    Qt::Gui
)

        其中引入了一个公共设置qt-base.cmake文件,内容如下:

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

if(CMAKE_BUILD_TYPE STREQUAL Debug AND WIN32)
    set(BinSuffix d)
endif()

set(TargetName ${PROJECT_NAME}${BinSuffix})

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)

3、子工程文件2,生成一个可执行文件并依赖于子工程1

cmake_minimum_required(VERSION 3.14)
project(apitest VERSION 1.0.0)

include(../../cmake/qt-base.cmake)

find_package(Qt5 COMPONENTS Gui)

include_directories(../apilib/include)
link_directories(../apilib/lib)

file(GLOB apitestSrc 
    "src/*.h" "src/*.cpp"
)

add_executable(${TargetName} ${apitestSrc})

target_link_libraries(${TargetName} PRIVATE
   Qt::Gui apilib
)

4、调试配置文件

{
    "configurations": [
        {
            "name": "apitest",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceRoot}/apitest/bin/apitest",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "visualizerFile": "D:/Qt/Tools/qt5.natvis",
            "environment": [
                {
                    "name": "PATH",
                    "value": "D:/dev-space/qt5.15.6_msvc2019_64/bin;${workspaceRoot}/apilib/bin;${env:PATH}"
                }
            ],
        }
    ]
}

        program 为要调试的程序

        visualizerFile 为qt对象内部变量可视化描述文件,总之设置了这个文件后,调试的时候就可以方便的查看Qt的对象。在安装QtVs助手后,会在文档中安装此文件:

        在 environment 变量中设置 PATH 环境变量,调试的时候就可以找到依赖的dll了。

5、项目设置(将覆盖全局settings.json里的设置项)

如果想在此项目中使用别的Qt版本可以添加以下设置,否则不需要配置此文件。

{
    "cmake.configureEnvironment": {
        "CMAKE_PREFIX_PATH": "D:/Qt/qt5.15.9_msvc2019_64_static/",
    },
}

QA:

1、如何编译:

ctrl+shift+p 唤出命令输入框

输入 cmake configure 回车,配置工程

输入 cmake build 回车,编译

2、如何调试:

按下F5,或者点击:

3、添加 ui 文件后在 cpp 中不识别:

输入 cmake configure 回车,配置工程

输入 cmake build 回车,编译

然后再回到 cpp 中就可以识别了

4、出现奇怪的编译错误无法找到问题:

删除工程目录下的 build 文件夹,然后重新编译

  • 24
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值