GAMES101 - 实验环境搭建
GAMES101 Vscode可行配置
环境:Vscode + CMakeTools + CppTools + Mingw64
Vscode中C++引入第三方库的方式大致有以下三种:
- 对于非Cmake项目,利用CppTools(Miscrosoft官方为Vscode提供的编译和调试插件)的IntelliSense功能,通过设置
c_cpp_properties.json
中的includePath项引入对应库的/include
目录。 - 对于Cmake项目,利用CMakeTools (Miscrosoft官方为Vscode提供的Cmake插件)一键基于
CMakeList.txt
生成/build
目录,在通过内置终端make并运行。 对于Cmake项目,同时使用CppTools与CMakeTools ,高度自动化的预设置支持一键build和一键debug,在配置合理的情况下这种方式是最高效的。麻烦点在于需要对
setting.json
,c_cpp_properties.json
,task.json
,launch.json
进行额外配置。假设使用windows下以mingw64为编译器,具体改动如下。setting.json
。在工作区配置中将C_Cpp.default.configurationProvider设置为ms-vscode.cmake-tools,表示通过CMakeTools 引入外部链接而不是内置的includePath。c_cpp_properties.json
。如果在setting.json
中已配置或配置失效,可以添加configurationProvider设置为ms-vscode.cmake-tool从而实现同样的引入效果,两者不冲突。task.json
。由于CMakeTools 在CMakeList.txt
保持的时候就完成了build,因此只需提供make的任务指令即可,具体指令根据环境变量的设置而变,一般为make或mingw32-make,json配置如下// tasks下添加 { "label": "make", "options": { "cwd": "${workspaceFolder}/build" }, "type": "shell", "command": "mingw32-make -j4", }
launch.json
。注意指定正确的miDebuggerPath和program,并加载task.json
中新添加的make为前置任务,json配置如下(Assignments2为例)"configurations": [ { "name": "debug", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\build\\Rasterizer.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "D:\\MinGW\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "make" } ]
其他坑
- eigen和opencv自带include文件无法被正确引入时,需要自己用Cmake进行本地构建和编译,这里的坑搜一下网上的文章基本能解决。
- 在用mingw本地编译opencv时需要使用mingw64-posix离线版,online版的选了posix还不行。
- CMakeList.txt找不着包,是环境变量没有被正确配置。所幸GAMES101的助教提供了写好的CMakeList作为参照,把拥有
xxxconfig.cmake
的目录添加到对应的环境变量即可(例如设置OpenCv DIR目录为包含opencvconfig.cmake
的路径),不必绕进cmake的一堆坑。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!