nginx 当用C编写模块时,如何正确引用构建模块所基于的头文件?

waxmsbnn  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(158)

例如,当编写NGINX模块并需要包含来自所述模块的头文件时,我该怎么做?

#include <ngx_core.h>
#include <ngx_http.h>

很自然地,头文件找不到,因为它们在磁盘上不存在。我怀疑解决这个问题的正确方法是引入整个NGINX源文件的头文件,这样我就可以在我的模块中引用这些头文件。
我在这里寻找设计时编译器的反馈,而不是寻找编译时的支持,因为模块是使用NGINX的configure脚本构建的,该脚本处理编译的连接。
更具体地说,我如何在VS代码中解决这个问题,而不把所有的NGINX头文件带到我的src目录中?是否有我需要的某种符号文件?
如果我需要一个顶层的lib目录和头文件,这很好,但是我不能在我的源文件中更改include路径(所以我不能将include路径更改为../lib/nginx/ngx_core.h),因为这在编译时会失败。

uxhixvfz

uxhixvfz1#

我能够通过克隆NGINX repo(和其他我需要的)并将include路径添加到我的项目的VS代码配置中,以便C/C++扩展可以找到它们来解决这个问题。

.vscode/c_cpp_属性.json

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "~/Projects/third-party/nginx/objs/**",
                "~/Projects/third-party/nginx/src/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++14",
            "intelliSenseMode": "linux-clang-x64"
        }
    ],
    "version": 4
}

对于NGINX,这需要您下载/GZip版本,将其解压缩到您想要的位置,然后运行./configure--这将在objs中生成一些必需的内容/头文件。

相关问题