VSCode配置编译MSVC程序高级示例

本文详细介绍了如何将Visual Studio C++项目转换为VSCode项目,并利用MSVC进行编译。内容包括编译、链接、生成静态库和动态库的步骤,以及使用命名管道(named pipe)进行进程间通信的示例代码fifoapi。同时,分享了如何配置VSCode的任务文件(tasks.json)以实现编译流程。
摘要由CSDN通过智能技术生成

VSCode配置编译MSVC程序高级示例

本文讲解了如何把一个VisualStudio C++(VC)项目转为VSCode(VSC)项目,并使用MSVC编译。MSVC编译一个程序分为编译(cl.exe)和链接(link.exe)的过程。有时候还需要生成静态库或动态库(lib.exe)。如果我们使用VC,这些过程是在背后运作的,如果使用VSC,则不得不了解这些命令行背后运作的机理。

本文的示例代码 fifoapi 可以在我的 github 上免费下载。这个代码演示了如何使用命名管道(named pipe 或 fifo)在进程间(客户端和服务端)直接传递消息。命名管道的细节我已经封装到 fifoapi 中,用户可以不用了解这些细节就能使用fifo。代码支持 Windows (提供了VSC工程)和 Linux (目前还未提供 VSC 工程)。

下载 fifoapi

fifo 示例代码本身就具有相当的实用价值,是我在2020年春节的期间窝在家里过年,百无聊赖时的作品:用于在一台机器的不同进程(无依赖关系)之间传递消息。你可以为任何目的使用它,前提是不改变
文件头部的版权声明部分:

Copyright © 2008-2080 pepstack.com, 350137278@qq.com

无论是 Windows还是Linux,无论服务端还是客户端,都使用了同一个头文件:fifo.h。它提供了简单易用的接口:

  • fifo.h

    const char * fifo_server_get_pipename (fifo_server server);
    int fifo_server_new (const char *pipename, int client_timeout, int connect_timeout, fifo_server *server);
    void fifo_server_runforever (fifo_server server, fifo_onpipemsg_cb pipemsgcb, void *argument);
    void fifo_server_free (fifo_server server);
    
    const char * fifo_client_get_pipename (fifo_client client);
    int fifo_client_new (const char *pipename, int wait_timeout, fifo_client *client);
    void fifo_client_free (fifo_client client);
    int fifo_client_write (fifo_client client, const fifo_pipemsg_t *msg);
    int fifo_client_read (fifo_client client, fifo_pipemsg_t *msg);
    

编译Windows的fifoapi需要 fifo-win.c,编译Linux的fifo需要 fifo.c。github的示例代码仅仅显示了如何使用VSCode来构建MSVC项目。以后我会加入mingw和Linux构建的部分。

我首先采用VSCode来构建fifo-win的静态库,然后又构建了客户端(fifoclient.exe)和服务端(fifoserver.exe)的测试程序。当然,构建测试程序不是必须的。工程目录下的 vscode-msvc-x64.bat 是构建 64 位程序用到的。双击 vscode-msvc-x64.bat,进入 cmd 窗口,在这个窗口里,进入到项目的目录下面,然后输入命令:

...\Workspace\fifoapi> code .

就打开了相应的(x86或x64)的VSCode。然后按 Ctrl+Shift+B,选择合适的 task 去构建。
在这里插入图片描述需要注意的是,如果是双击 vscode-msvc-x64.bat 打开的项目,不要去构建 x86 的 task。反之亦然。

具体编译参数我没有深入了解,这也是我用VSCode写的第一个实用的项目,初步体会是非常强大,非常技术,然而如果对项目构建的底层逻辑不了解,想用好还是有点学习曲线的。绝对不是开箱就能用的傻瓜式的。但是一旦掌握,你会觉得非常cool。我觉得仅仅cool这一点就足够了。

这里提供一下 tasks.json 全文,供快速参考。

  • tasks.json

    {
         
        // See https://go.microsoft.com/fwlink/?LinkId=733558 
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
         
                "type": "shell",
                "label": "win-all-debug-obj",
                "problemMatcher": ["$msCompile"],
                "command": "cl.exe",
                "args": [
                    "/MTd", "/D", "_DEBUG",
                    "/Fo:", "${workspaceFolder}\\build\\fifo-win.obj",
                    "/c", "${workspaceFolder}\\src\\fifo-win.c"
                ],
                "detail": "> compile Windows x86(32bits) debug objects: fifo-win.obj"
            },
            {
         
                "type": "shell",
                "label": "win-all-rels-obj",
                "problemMatcher": ["$msCompile"],
                "command": "cl.exe",
                "args": [
                    "/MT", "/D", "NDEBUG",
                    "/Fo:", "${workspaceFolder}\\build\\fifo-win.obj",
                    "/c", "${workspaceFolder}\\src\\fifo-win.c"
                ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

车斗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值