前言
在之前的时候一直使用的是复制.vsode文件夹的方式进行的文件配置,虽然对于一些较小的项目来说都塞到一个里面就够用了,不过对于一些新的项目可能需要再去找一个模板的json文件重新创建比较麻烦,刚好最近闲着没事,顺便就做一个exe自动生成,这样之后再弄的时候就直接运行exe文件就可以了。
功能预计
最终应当是有两种预期方案:
1.运行exe文件,然后会弹出窗口输入文件夹目录。
2.运行exe文件,自动在当前目录下创建.vscode文件夹,并自动配置好相关的内容。
思路流程图
所需技术
其实虽然说是为了配置文件,实际上也就是利用了基本的文件I/O操作写的一个py文件,然后封装成exe文件,方便自己偷懒用的。弄这个主要就是之后想随便学点C++相关的知识,写个辅助之类的帮自己挂机啥的,python虽然也能写不过执行速度相对来说还是比较慢。
代码v1
最开始的时候是随便写了个demo试了一下看看能不能创一个文件夹,然后从里面创建一个新的文件,把数据写进去,以为会报错来着,结果直接就对了,挺意外的哈哈哈。
import os
os.makedirs("./v")
with open("./v/a.json","w",encoding="utf-8") as f:
f.write("6")
之后就是把这个文件挪到别的文件夹下,然后把模板中的json内容放到字符串里面写到文件里就可以了。
最终的代码是:
# 目标:实现文件夹.vscode所有文件的一件创建,进而完成vscode的C环境完整配置。
import os
filename=["c_cpp_properties.json","launch.json","tasks.json"]
content=["""{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/mingw64/bin/gcc.exe",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}""",
"""{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}""",
"""{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:/mingw64/bin/g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}"""]
if not os.path.exists("./.vscode"):
os.makedirs("./.vscode")
for i in range(len(filename)):
with open(os.path.join("./.vscode",filename[i]),"w",encoding="utf-8") as f:
f.write(content[i])
debug的过程
第一次的时候写这个代码以为生成了就没啥问题了,结果发现json文件里面的那个编译器路径有报错:
Invalid escape character in string.
稍微思考了一下发现应该是原本文件里面的\在写入之后变为了\,毕竟都是路径符号,都改成/就可以了。
测试结果
按下F5运行一个随意的测试程序,可以正常运行,配置完成。
exe文件封装
输入pyinstaller -F create_environ.py进行打包得到一个exe文件,进而可以获得一个exe文件,放到一个新的文件夹,双击产生了所需要的环境。封装成功。