当前位置:   article > 正文

windows .vscode的json文件配置 CMake 构建项目 调试窗口中文设置等_json配置cmake

json配置cmake

一、CMake 和 mingw64的安装和环境配置 

二、tasks.json和launch.json文件配置

  • tasks.json
  1. {
  2. "version": "2.0.0",
  3. "options": {
  4. "cwd": "${workspaceFolder}/build"
  5. },
  6. "tasks": [
  7. {
  8. "type": "shell",
  9. "label": "cmake",
  10. "command": "cmake",
  11. "args": [
  12. ".."
  13. ]
  14. },
  15. {
  16. "label": "make",
  17. "group": "build",
  18. "command": "make",
  19. "args": [],
  20. "problemMatcher": []
  21. },
  22. {
  23. "label": "Build",
  24. "dependsOrder": "sequence",
  25. "dependsOn": [
  26. "cmake",
  27. "make"
  28. ]
  29. },
  30. {
  31. "type": "cppbuild",
  32. "label": "C/C++: g++ 生成活动文件",
  33. // "command": "/usr/bin/g++",
  34. "command": "D://mingw64//bin//g++.exe",
  35. "args": [
  36. "-fdiagnostics-color=always",
  37. "-g",
  38. "-o",
  39. "${workspaceFolder}/bin/app.exe",
  40. "-fexec-charset=GBK"
  41. ],
  42. "options": {
  43. "cwd": "${workspaceFolder}"
  44. },
  45. "problemMatcher": [
  46. "$gcc"
  47. ],
  48. "group": {
  49. "kind": "build",
  50. "isDefault": true
  51. },
  52. "detail": "D://mingw64//bin//g++.exe"
  53. }
  54. ]
  55. }
  • launch.json
  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "(gdb) 启动",
  9. "type": "cppdbg",
  10. "request": "launch",
  11. "program": "${workspaceFolder}/bin/app.exe",
  12. "args": [],
  13. "stopAtEntry": false,
  14. "cwd": "${workspaceFolder}",
  15. "environment": [],
  16. "externalConsole": true,
  17. "MIMode": "gdb",
  18. "setupCommands": [
  19. {
  20. "description": "为 gdb 启用整齐打印",
  21. "text": "-enable-pretty-printing",
  22. "ignoreFailures": true
  23. },
  24. ],
  25. "preLaunchTask": "Build",
  26. "miDebuggerPath": "D://mingw64//bin//gdb.exe", // 修改为你的 gdb 路径
  27. },
  28. ]
  29. }

 三、CMakeLists.txt文件

  1. cmake_minimum_required(VERSION 3.15)
  2. project(Cat)
  3. # C++ 的解决办法
  4. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fexec-charset=GBK")
  5. include_directories(${PROJECT_SOURCE_DIR}/include)
  6. aux_source_directory(${PROJECT_SOURCE_DIR}/src SRC_LIST)
  7. # 添加可执行文件
  8. add_executable(app main.cpp ${SRC_LIST})
  9. set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

四、头文件和源文件

  • cat.h
  1. #ifndef CAT_H
  2. #define CAT_H
  3. #include <iostream>
  4. #include <string>
  5. class Cat{
  6. public:
  7. Cat(std::string name, int age); // 构造函数,初始化姓名和年龄
  8. // Getter
  9. std::string getName () const;
  10. int getAge() const;
  11. // Setter
  12. void setName(std::string name);
  13. void setAge(int age);
  14. // print
  15. void printObj() const;
  16. ~Cat();
  17. private:
  18. std::string m_name; // 姓名
  19. int m_age; // 年龄
  20. };
  21. #endif
  • cat.cpp
  1. #include "cat.h"
  2. Cat::Cat(std::string name, int age) {
  3. this->m_name = name;
  4. this->m_age = age;
  5. }
  6. std::string Cat::getName() const{
  7. return this->m_name;
  8. }
  9. int Cat::getAge() const{
  10. return this->m_age;
  11. }
  12. void Cat::setName(std::string name) {
  13. this->m_name = name;
  14. }
  15. void Cat::setAge(int age) {
  16. this->m_age = age;
  17. }
  18. void Cat::printObj() const{
  19. std::cout << "Cat(" << this << ")" << ": Name : " << this->m_name << ": Age : " << this->m_age << std::endl;
  20. }
  21. Cat::~Cat() {
  22. std::cout<<"析构函数~"<<std::endl;
  23. }
  • main.cpp
  1. #include <iostream>
  2. #include "cat.h"
  3. using namespace std;
  4. int main(int argc,char *argv[]) {
  5. // 值
  6. Cat cat1("moon",3);
  7. // const Cat cat1("moon",3);
  8. // const Obj 只能调用 const Method
  9. cout<<cat1.getName()<<endl;
  10. cout<<cat1.getAge()<<endl;
  11. cat1.printObj();
  12. cat1.setName("黑猫警长");
  13. cout<<cat1.getName()<<endl;
  14. // 指针
  15. const Cat *catPoint = &cat1;
  16. cout<<catPoint->getName()<<endl;
  17. cout<<catPoint->getAge()<<endl;
  18. catPoint->printObj();
  19. // 引用
  20. const Cat &catRef = cat1;
  21. cout<<catRef.getName()<<endl;
  22. cout<<catRef.getAge()<<endl;
  23. catRef.printObj();
  24. system("pause");
  25. return 0;
  26. }

五、中文乱码问题解决

 CMake C/C++程序输出乱码
Clion CMake C/C++程序输出乱码_cmake message 乱码-CSDN博客https://blog.csdn.net/qq_37274323/article/details/120674592

  1. # C的解决办法
  2. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fexec-charset=GBK")
  3. # C++ 的解决办法
  4. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fexec-charset=GBK")

在此基础上,进一步来解决 VScode控制台中文乱码问题?(文章推荐)

(4 封私信 / 25 条消息) 如何解决VScode控制台中文乱码问题? - 知乎 (zhihu.com)https://www.zhihu.com/question/65557618/answer/2950382369?utm_id=0

  • 在tasks.json文件中添加:"-fexec-charset=GBK"

  • 接着,在设置中搜索"encoding",启用Auto Guess Encoding 

五、运行方式

方式一:1.先点击生成,可以生成所选目标

2.点击运行按钮,在终端窗口中启动所选目标 

方式二:按住F5运行,会出现调试窗口和终端窗口,也可以看变量等

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/770859
推荐阅读
相关标签
  

闽ICP备14008679号