PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

36.18. 扩展构建基础设施 PGXS #

如果为已经安装好的外部 PostgreSQL 服务器独立开发编译扩展模块,官方提供了名为 PGXS 的构建基础设施。开发者只需编写一个极简的标准 Makefile 并包含 $(PGXS),即可自动识别编译环境:

MODULES = my_extension
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

PGXS 识别并支持以下常用 Makefile 构建变量:

MODULES

需要根据同名单一 C 源码文件直接编译构建的共享库模块列表。

MODULE_big

由多个 C 目标源码文件联合链接构建的复合共享库模块基础名称。

PROGRAM

需要编译构建的独立可执行客户端或服务端二进制程序名称。

EXTENSION

扩展的基础名称。声明后,构建工具链会自动将同名的 .control 文件安装至 SHAREDIR/extension/。

MODULEDIR

指定共享库模块应当安装到的具体子目录。

DATA

需要直接安装至 SHAREDIR/extension/ 的静态数据文件或 SQL 脚本清单。

DATA_built

需要由 Makefile 规则动态生成后再执行安装的数据文件清单。

DATA_TSEARCH

需要安装至全文检索配置目录的数据文件。

DOCS

需要安装至文档目录的说明文档文件清单。

HEADERS

需要安装至系统公共包含目录的 C 头文件。

HEADERS_MODULE

需要安装至模块专属子目录的头文件。

SCRIPTS

需要安装至 BINDIR 的可执行脚本文件清单。

SCRIPTS_built

需要编译或预处理后安装至 BINDIR 的脚本文件。

REGRESS

供 make installcheck 执行回归测试的基础测试用例脚本列表。

REGRESS_OPTS

传递给 pg_regress 回归测试驱动程序的附加选项。

ISOLATION

并发事务隔离性测试用例清单。

ISOLATION_OPTS

传递给并发测试工具的附加参数选项。

TAP_TESTS

布尔值,是否运行基于 Perl 的 TAP 自动化集成测试套件。

NO_INSTALL

跳过常规的安装目标规则。

NO_INSTALLCHECK

跳过针对运行中集群的 installcheck 测试。

EXTRA_CLEAN

执行 make clean 时额外需要自动清理删除的文件清单。

PG_CPPFLAGS

附加给 C 预处理器的编译宏与包含路径(如 -I)。

PG_CFLAGS

附加给 C 编译器的专属标志(如 -Wall -O2)。

PG_CXXFLAGS

附加给 C++ 编译器的专属编译参数。

PG_LDFLAGS

附加给系统链接器的标志。

PG_LIBS

链接到最终程序中所需的外部第三方共享库列表。

SHLIB_LINK

在构建共享模块库时需要额外链接的动态库。

PG_CONFIG

指定宿主环境中的 pg_config 可执行文件路径。