Windows 10 下VS Code配置简易C++开发环境

  1. 在安装完Mingw-w64和VS Code之后,将Mingw-w64的bin目录添加到系统变量Path中;
  2. 打开VS code后找到左则工具条上的“扩展”按钮(四个小方块那个)点击后进入扩展应用商店,在搜索框中搜索"C/C++"和"code runner"并安装它们,其他的扩展看自己需要安装(推荐安装中文语言包);
  1. 新建一个工作目录(为了避免不必要的麻烦,路径最好不要包含中文和空格);通过VS code的"文件"菜单打开这个目录;打开之后在目录名(我的目录名是"CHAPTER_000_3")后边有四个图标,第一个图标是新建文件;点击之后在下方输入文件名(我的文件名是"main.cpp")之后回车创建文件;
  1. 国际惯例,来一段hello world;
#include <iostream>

int main()
{
    std::string msg = "hello, world";//据说世界上第一个hello world程序打印出来就是这个样子;全部小写,两个单词之间用逗号和空格分隔,结尾没有标点符号。
    std::cout << msg << std::endl;
    return 0;
}
  1. 要在VS code中运行上面这段代码也没有那么容易,首先让VS code自动为我们创建c_cpp_properties.json、launch.json、settings.json、tasks.json这四个文件;

第一步:创建tasks.json文件,在菜单条中点击<终端(T)>选择最后一项<配置默认生成任务...>之后<运行>框会弹出下拉列表,选择<C/C++:g++.exe build active file>,VS code会自动在工作文件夹下创建.vscode目录,并在该目录下创建tasks.json文件;

//tasks.json 本行不用复制
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe build active file",
			"command": "C:\\TDM-GCC-64\\bin\\g++.exe",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "C:\\TDM-GCC-64\\bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "compiler: C:\\TDM-GCC-64\\bin\\g++.exe"
		}
	]
}

第二步:创建c_cpp_properties.json文件,按下ctrl+shift+P,在<运行>框输入"C/C++",在下拉列表中找到<C/C++:编辑配置(json)>点击开始编辑c_cpp_properties.json文件;

//c_cpp_properties.json 本行不用复制
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}\\**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "C:\\TDM-GCC-64\\bin\\g++.exe", //g++所在的目录
            "cStandard": "c17", //使用C17标准
            "cppStandard": "c++17", //使用C++17标准
            "intelliSenseMode": "gcc-x64" //因为使用GCC编译Windows程序所以IntelliSense 设置为gcc-x64
        }
    ],
    "version": 4
}

第三步:创建launch.json文件,在菜单条中选择<运行(R)>点击<添加配置>,在<运行>框弹出的下拉列表中选择<C++(GDB/LLDB)>,之后选择<g++.exe - 生成和调试活动文件>(不知道为什么出现两个g++选项,反正我选择第一个);

这里不知道什么原因有时候生成的launch.json文件会有问题。如果你操作后生成的内容没有配置好"program"、"miDebuggerPath" 和 "preLaunchTask的话,就复制我的文件,把gdb路径替换成你的就行了。还有一个注意事项就是 "preLaunchTask"的值必须与tasks.json文件中"label"的值保持一样,否则无法调试;

//launch.json 本行不用复制
{
    "version": "0.2.0",
    "configurations": [
    
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\TDM-GCC-64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe build active file"
        }
    ]
}

第四步:创建settings.json文件,这里要创建的是对应当前工作目录的settings.json文件;按下ctrl+shift+P调出<运行>框,输入"settings.json"选择"首选项: 打开工作区设置(JSON)"开始编辑settings.json文件;

删除默认生成的内容,将下面的配置文件内容复制进去;

//settings.json 本行不用复制
{
    "code-runner.runInTerminal": true,//让code runner在Power Shell中运行;
    "code-runner.executorMap": {
        //此处有很多项,我只保留了C和C++的;
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    }
}
  1. 运行一下前面敲的代码,在代码编辑区右键鼠标,点击<Run Code>,如果在下面的命令行中看到"hello, world"说明编译器已经配置成功;
  1. 最后一步,测试一下gdb是否正确配置,在左则工具条中点击<运行>按钮(有甲虫的那个),在代码编辑区设置一个断点(在行号的左边单击,会出现一个小红点),最后点击绿色的三角进行调试;如果在变量栏里看到变量的值,在主窗体的标题下面看到调试工具条说明配置正解了。

TDM-GCC9.2.0目前不支持通配符编译,所以还是去mingw-w64.org下载Mingw-W64-builds

PHP 7.4.11编译安装(Debian 10 环境)

#配置编译参数

./configure --prefix=/usr/local/php7411 --disable-all \
--build=x86_64-debian10-linux-gnu --enable-cli --enable-fpm \
--with-fpm-user=www --with-fpm-group=www --with-fpm-systemd \
--with-fpm-acl --with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/conf.d --with-layout=PHP \
--with-libxml --with-openssl=shared --with-pcre-jit --with-sqlite3=shared \
--with-zlib --enable-bcmath --enable-calendar --with-curl=shared \
--enable-dom --enable-ftp=shared --enable-gd=shared --enable-exif=shared \
--enable-session --enable-soap=shared --enable-sockets=shared --enable-phar=shared \
--enable-posix --enable-tokenizer --enable-xml --enable-xmlreader --enable-xmlwriter \
--with-zip=shared --with-tsrm-pthreads --enable-mbstring=shared --enable-mbregex \
--enable-intl=shared --with-gettext=shared --with-iconv=shared \
--enable-opcache=shared --enable-huge-code-pages=shared --enable-pcntl=shared \
--with-mysqli=shared --with-mysql-sock --enable-json --enable-pdo \
--with-pdo-mysql=shared --with-sodium=shared --with-libedit=shared \
--with-pdo-sqlite=shared build_alias=x86_64-debian10-linux-gnu \
--enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-expat=shared \
--with-xmlrpc=shared --with-xsl=shared --with-gmp=shared --with-mhash \
--with-enchant=shared --enable-ctype --with-pspell \
--enable-shmop=shared --with-snmp=shared --enable-simplexml \
--enable-mysqlnd=shared --enable-fileinfo --with-ldap=shared \
--with-bz2=shared --enable-filter

nginx systemd service file

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
#PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

nginx 1.18.0 编译安装(Debian 10环境)

#下载nginx 1.18.0源码

wget https://nginx.org/download/nginx-1.18.0.tar.gz

#解压源码包

tar xf nginx-1.18.0.tar.gz

#配置编译参数

cd nginx-1.18.0
./configure --prefix=/usr/local/nginx1180 --user=www --group=www \
--build=x86_64-debian10-linux-gnu --with-select_module \
--with-poll_module --with-threads --with-file-aio \
--with-http_ssl_module --with-http_v2_module --with-http_realip_module \
--with-http_addition_module --with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic --with-http_sub_module \
--with-http_dav_module --with-http_flv_module \
--with-http_mp4_module --with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module --with-http_secure_link_module \
--with-http_degradation_module --with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module=dynamic --with-mail=dynamic \
--with-mail_ssl_module --with-stream=dynamic \
--with-stream_ssl_module --with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module --with-google_perftools_module \
--with-pcre --with-pcre-jit --with-libatomic

#编译并安装

make
sudo make install