基于msys2和vscode打造科学计算C++环境
基于msys2和vscode打造c++开发环境
下载msys2
到清华的镜像下载msys2的最新版:
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/

把下载好的文件放在准备安装的文件夹里,例如d:\prog,双击运行自动解压缩,没有任何需要确认参数的地方。解压缩完成后会出来一个msys64的文件夹,打开这个文件夹。
初始设置
运行文件夹中的msys2.exe

弹出个命令行窗口,运行半天初始化设置:

可以放这运行半天,去干会别的,主要耗费时间的是更新gpg的keys,等一会实在过不去,用ctrl+c结束一般也没啥大事。
参考清华镜像的说明修改镜像源:
https://mirrors.tuna.tsinghua.edu.cn/help/msys2/
就是在msys2.exe的命令行窗口中运行:
sed -i
"s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*

运行pacman -Syu
出现的确认填y回车

安装c++相关的包
pacman -Ss 包的部分名字:搜索包
pacman -S 包的全名: 安装该包
更具体的命令使用方式读这个链接:
https://blog.csdn.net/hustlei/article/details/86687621
这里需要安装的包的命令,一律回答y安装:
pacman -S mingw-w64-ucrt-x86_64-gcc
pacman -S mingw-w64-ucrt-x86_64-make
pacman -S mingw-w64-ucrt-x86_64-xmake
pacman -S mingw-w64-ucrt-x86_64-gdb
pacman -S mingw-w64-ucrt-x86_64-openmp
pacman -S mingw-w64-ucrt-x86_64-openblas
pacman -S mingw-w64-ucrt-x86_64-armadillo
安装vscode
到微软下载vsode压缩包,不要下载exe:
https://code.visualstudio.com/docs/?dv=winzip
下载慢,失败,加速的方法看这个链接:
https://zhuanlan.zhihu.com/p/112215618
解压缩到msys64文件夹下的usr/bin目录下比较省事,也可以解压缩到其他文件夹:

把ucrt64.exe固定到开始屏幕
运行ucrt64.exe打开一个命令行窗口,运行code回车。以后每次启动vscode都要这么启动,这样就可以不用设置path了。

如果安装在其他位置,需要把d:prog//msys64/ucrt64/bin添加到path环境变量,上面的路径根据自己的安装位置进行修改。
开始菜单搜索环境,就出来:

先点path,点编辑,然点浏览,然后选中对应的路径,就出来:


确定就设置好了。
安装vscode插件
在插件里搜索c++,只安装第一个插件

搜索xmake,安装

创建第一个项目
到文件窗口,同时按ctrl+shift+p,上面弹出来的命令栏里输入xmake,选下面的xmake:create project

会提示没打开文件夹,要创建一个新的项目文件夹。

vscode在第一次没有选择或者关了弹窗的情况下,再次创建项目会没反应,可以关了重新打开vscode一次,也可以在ucrt64.exe命令行窗口里直接运行:
xmake create -l c++ -P ./文件夹名

提示的是否信任,选是,信任。

完事再ctrl+shit+p,输入xmake,选择create project
又会重新弹出窗口

弹出的下拉菜单选C++
然后又弹出一个下拉菜单选console
然后会生成目录结构,大致如下:

然后开始配置,先是选平台,从windows改成mingw

然后改toolchain,改成gcc

然后点build,生成,正常就不会报错了,build完成可以点三角形运行,也可以点旁边的debug进行调试了。
静态链接的xmake.lua 实例


Armadillo与matlab的语法对比:
https://arma.sourceforge.net/docs.html#syntax

最后,如果intellisense有问题,一般会提示设置include folder,这个也可以自己改项目文件夹中.vscode文件夹中的json配置文件。

总结:xmake比微软提供的C++插件套装,还有cmake套装方便到不知哪里去了。
全文完。