【发布时间】:2022-11-11 00:10:04
【问题描述】:
例如,当编写 NGINX 模块并需要包含来自所述模块的标头时,我该怎么做?
#include <ngx_core.h>
#include <ngx_http.h>
自然,找不到标头,因为它们不存在于磁盘上。我怀疑解决此问题的正确方法是引入整个 NGINX 源的标头,以便我可以引用模块中的标头。
我在这里寻找设计时编译器反馈,而不是寻找编译时支持,因为该模块是使用 NGINX 的 configure 脚本构建的,该脚本处理编译的连接。
更具体地说,如何在不将所有 NGINX 头文件引入我的 src 目录的情况下在 VS Code 中解决这个问题?我需要某种符号文件吗?
如果我需要一个带有标头的顶级 lib 目录,那很好,但我无法更改源文件中的包含路径(因此我无法将包含路径更改为例如../lib/nginx/ngx_core.h),因为这将在期间失败编译时间。
【问题讨论】:
-
如果您希望 VSC 在这里为您提供支持,您需要提供标题。它们不需要在你的项目的源代码树中,而是使用你的操作系统的包管理器来安装这个库的开发支持。 -- 由于我不使用 VSC(它只是一个智能编辑器,但不是一个严肃的 IDE),我只能假设您应该能够使用已安装库的路径设置您的项目。
-
了解标题需要是某处为了利用它们。不确定 NGINX 是否按照您的建议提供开发包。至少我找不到任何关于它的东西。对于一个建立在其他 C 代码基础上的传统 C 程序,人们将如何去做呢?
-
由于在编译时也需要标头(以及在链接时需要库,在运行时也需要共享库),您应该阅读有关推荐方式的项目文档。然后你有标题,你可以设置 VSC 的项目。
标签: c nginx visual-studio-code nginx-module