VS Code添加第三方C库(保姆级教程)

这里以安装c语言的uthash库为例

安装C/C++ Extension Pack拓展

配置c_cpp_properties.json文件

查看是否有c_cpp_properties.json文件,如果没有就自己创建一个(详细信息课参照官网:c_cpp_properties.json reference

下面是我的c_cpp_properties.json内容。

{
    "env": {
        "myIncludePath": [
            "${workspaceFolder}/include",
            "${workspaceFolder}/src"
        ],
        "myDefines": [
            "DEBUG",
            "MY_FEATURE=1"
        ]
    },
    "configurations": [
        {
            "name": "Win32",
            "compilerPath": "D:\\MinGW\\mingw64\\bin\\gcc.exe",
            "intelliSenseMode": "gcc-x64",
            "includePath": [
                "D:\\MinGW\\C_Lib\\uthash\\src",
                "D:\\MinGW\\mingw64\\include"
            ],
            "defines": [
                "${myDefines}",
                "_WINDOWS"
            ],
            "cStandard": "c17",
            "cppStandard": "c++20",
            "windowsSdkVersion": "10.0.19041.0",
            "browse": {
                "path": [
                    "${myIncludePath}",
                    "${workspaceFolder}"
                ]
            }
        }
    ],
    "version": 4,
    "enableConfigurationSquiggles": true
}

然后按ctr+shift+p,打开并搜索c/c++编辑配置,选择UI界面。这里是使用UI界面来配置c_cpp_properties.json

进入界面后:

我的第三方库文件uthash.h存放在D:\MinGW\C_Lib\uthash\src中,大家可以根据自己的文件位置进行设置,如下图:

配置tasks.json文件

配置.vscode文件夹里面的tasks.json文件,这里配置的主要目的是让编译器能够成功找到这个库并进行链接编译。配置方法如下图所示:

我的tasks.json文件的配置信息(可供参考):

//这是tasks.json文件的配置信息
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe 生成活动文件",
            "command": "D:\\MinGW\\mingw64\\bin\\gcc.exe",//编译器地址
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "-I",   //第三方库的头文件路径
                "D:\\MinGW\\C_Lib\\uthash\\src",//第三方库地址
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

完成

成功添加并成功编译:

### 如何在VSCode中配置和使用C++ #### 配置环境变量与安装扩展 为了能够在Visual Studio Code(VSCode) 中顺利编译并运行带有外部依赖项的C++程序,需要先确保已正确设置了开发环境。这通常意味着已经安装了适用于Windows、macOS 或 Linux 的 C/C++ 扩展以及相应的构建工具链[^1]。 对于 Windows 用户来说,推荐通过Chocolatey 安装 MinGW-w64 来获取 GCC 编译器;而对于 macOS 和基于 Debian/Ubuntu 的Linux 发行版,则可以直接利用系统的包管理器来完成必要的软件包部署工作。 #### 设置 `c_cpp_properties.json` 文件 为了让 IntelliSense 正确解析头文件路径,在项目根目录下创建 `.vscode` 文件夹,并在此处放置名为 `c_cpp_properties.json` 的 JSON 文件。此文件用于指定包含路径和其他预处理器定义等内容: ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "path/to/library/include" ], "defines": [], "compilerPath": "/usr/bin/gcc", // or path to your compiler on other platforms "intelliSenseMode": "gcc-x64", "browse": { "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 4 } ``` 上述代码片段展示了如何向 `includePath` 添加自定义的位置以便编辑器能够识别这些资源[^2]。 #### 修改 `tasks.json` 构建任务 接下来要做的就是调整项目的构建过程以链接所需的静态或动态。同样是在`.vscode` 文件夹内找到或者新建一个叫做 `tasks.json` 的文件,按照如下方式编写内容: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "g++", "args": [ "-g", "./hello.cpp", "-o", "./bin/hello.exe", "-L/path/to/library/lib",// Library search paths here. "-lmylib" // The library you want link against without 'lib' prefix and '.a/.so' suffix. ] } ] } ``` 这里 `-L` 参数指定了查找共享对象(.so)/导入(.a,.dll.a)的地方,而 `-l` 后面跟的是去掉前缀(lib)和后缀(.a,.so,.dylib)后的实际名称。 #### 使用 CMakeLists.txt 进行更复杂的工程管理 当面对较为复杂的应用场景时,建议采用 CMake 工具来进行跨平台的自动化构建流程控制。此时可以在项目顶层建立一份 `CMakeLists.txt` 文档,描述源码结构及其关联关系,从而简化多模块间的协作开发模式: ```cmake project(MyProject) set(CMAKE_CXX_STANDARD 17) add_executable(${PROJECT_NAME} src/main.cpp) target_include_directories(${PROJECT_NAME} PRIVATE /path/to/library/include) find_library(MYLIB_LIBRARY mylib REQUIRED PATHS /path/to/library/lib NO_DEFAULT_PATH) if(NOT MYLIB_LIBRARY) message(FATAL_ERROR "Failed to find MyLib!") endif() target_link_libraries(${PROJECT_NAME} ${MYLIB_LIBRARY}) ``` 这段脚本实现了自动探测特定位置下的第三方组件,并将其加入到最终可执行文件的目标属性列表里去。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值