Vico Bill< 刘 利 波 > 的个人网站

记录关于学习、工作中的技术点滴

C,C++,Rust,Ruby爱好者;热衷于游戏开发、任务自动化与跨平台;沉迷于游戏引擎与图形表现;深信'简单、多元'哲学的力量。


访问主页

笔记集锦-vscode & vs

自定义vscode的extensions目录:

  • 可以通过快捷方式,添加命令行参数: vscode.exe –extensions-dir d:/vscode-extensions。
  • 也可通过在.vscode/下,通过mklink /J extensions d:/vscode-extensions/创建extensions的硬连接方式。

将vscode打造成Portable:

在vscode目录下,新建data目录。将extensions复制于此data目录;并在新建tmp目录,用于存储用户临时数据。

配置C++开发环境

  1. 前提条件:
    • 安装VSCODE
    • 安装C++ Extension for VSCODE
    • 安装WSL
  2. 设置WSL Linux环境
    • 在~/下,创建projects/helloworld
    • 更新WSL:sudo apt update && sudo apt dist-upgrade
    • 安装必要编译环境:sudo apt install build-essential gdb
  3. 创建Workspace
    • 在Windows下任意目录,使用cmd 创建与WSL结构类似的目录:projects/helloworld
    • 使用vscode打开helloworld目录:cd projects/helloworld && code .
  4. 配置编译器路径(c_cpp_properties.json)
    • ctrl+shift+p > C/C++:Edit Configurations(UI)
    • 选中compiler path 为/usr/bin/g++
    • Intellisense mode 为 ${default}
  5. 创建构建任务:(tasks.json)
    • ctrl+shift+p > Tasks:Configure Default Build Task
    • 编辑tasks.json为:
      {
      "version": "2.0.0",
      "windows": {
       "options": {
       "shell": {
         "executable": "bash.exe",
         "args": ["-c"]
       }
       }
      },
      "tasks": [
       {
       "label": "build hello world on WSL",
       "type": "shell",
       "command": "g++",
       "args": [
         "-g",
         "-o",
         "/home/<your linux user name>/projects/helloworld/helloworld.out",
         "helloworld.cpp"
       ],
       "group": {
         "kind": "build",
         "isDefault": true
       }
       }
      ]
      }
      
  6. 配置调试设置:(launch.json)
    • 菜单Debug > Add Configuration 选择 C++(GDB/LLDB)
    • 编辑launch.json为: ``` json { “version”: “0.2.0”, “configurations”: [ { “name”: “(gdb) Launch”, “type”: “cppdbg”, “request”: “launch”, “program”: “/home//projects/helloworld/helloworld.out", // 这里是WSL中的目录 "args": [""], "stopAtEntry": true, // 在入口处自动停止 "cwd": "/home//projects/helloworld/", // 这里是WSL中的目录 "environment": [], "externalConsole": true, "windows": { "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] }, "pipeTransport": { "pipeCwd": "", "pipeProgram": "c:\\windows\\sysnative\\bash.exe", "pipeArgs": ["-c"], "debuggerPath": "/usr/bin/gdb" }, "sourceFileMap": { "/mnt/c": "${env:systemdrive}/", "/usr": "C:\\Users\\" // 这里的实际目录,会在接下来的步骤再设置 } } ] }

7. 添加helloworld.cpp
- 在VSCode中,新建文件helloworld.cpp
- 添加测试代码并保存:
``` cpp
#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
   vector<string> msg {"Hello", "C++", "World", "from", "VS Code!", "and the C++ extension!"};

   for (const string& word : msg)
   {
      cout << word << " ";
   }
   cout << endl;
}
  • 移到string上,按下F12,可打开其定义头文件
  • 在VSCODE选项卡上,右键,Copy Path,即可得到包含的头文件真实路径。
  1. 设置系统头文件目录:
    • 将上一步复制的路径,填入launch.json的sourceFileMap:
       "sourceFileMap": {
         "/mnt/c": "${env:systemdrive}/",
         "/usr": "C:\\Users\\Administrator\\AppData\\Local\\Packages\\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\\LocalState\\rootfs\\usr\\"
       }
      
  2. 配置完成
    • 可按ctrl+shift+b构建,按F5即可调试。

Visual Studio

编译错误:

  • error C3859: virtual memory range for PCH:解决方法是: 在项目上右键–>属性–>C++–>命令行, 然后在最下面的文本框里输入:/Zm2000
  • error C1076: compiler limit: internal heap reached; use /Zm to specify a higher limit 解决方法同上

任何PCH> 250M的都被视为大文件。

配置WSL以及开机启动

wsl --set-default-version 2
wsl -l -v

Windows开机启动: WIN+R > shell:startup >

'init-linux.vbs'
Set ws = WScript.CreateObject("WScript.shell")
ws.run "wsl -d ubuntu -u root /etc/init.wsl"

修改sudo vim /etc/init.wsl

#! /bin/sh
service docker start 

保存,退出,sudo chmod +x /etc/init.wsl

最近的文章

【DailyGfx】StencilBuffer 模板缓冲

继续阅读
更早的文章

【Game】游戏开发流程指南-转

立项 一个项目立项的原因可能性非常多,有可能是公司拿到一个好的 IP,也有可能是几个负责人有个很棒的 idea,亦或是老板的梦想是做一个 XX 类型的游戏,这边不做过多的讨论。 立项过程中应该包含市场调查和产品定位,需要分析当前市场并且预测未来市场趋势,同时还要知道产品面对的对象以及这些对象应该有的特征、消费习惯等等。 开发初期2.1 核心玩法——此处核心玩法多指核心战斗,部分不存在战斗的游戏未在讨论之内。 对策划来说,开发初期最重要的是核心玩法...…

继续阅读