我的库在构建后创建的 .h 文件中有结构定义。但我在相应的 .h.in 中找不到这些定义。有人可以告诉我这一切是如何工作的以及它从哪里获取额外信息吗?
具体来说:我正在构建 pth,用户空间线程库。它有 pth_p.h.in,它不包含我正在寻找的结构定义,但是当我构建库时,会出现 pth_p.h 并且它具有我需要的定义。
事实上,我在构建库之前搜索了库中的每个文件,但找不到它在哪里生成结构定义。
Pth 使用 GNUAutoconf https://secure.wikimedia.org/wikipedia/en/wiki/Autoconf, Automake https://secure.wikimedia.org/wikipedia/en/wiki/Automake, and Libtool https://secure.wikimedia.org/wikipedia/en/wiki/Libtool。通过跑步./configure
你将运行一个最终运行的 shell 脚本m4 http://www.gnu.org/software/m4/检测是否存在大量不同的系统属性并对许多文件进行更改。
看起来可以归结为./configure
生成Makefile
from Makefile.in
然后通过 make 运行一些东西来触发shtool http://www.gnu.org/software/shtool/子命令scpp
:
pth_p.h: $(S)pth_p.h.in
$(SHTOOL) scpp -o pth_p.h -t $(S)pth_p.h.in -Dcpp -Cintern -M '==#==' $(HSRCS)
模糊链接,但这是一个shtool-scpp 联机帮助页 http://je.je/cgi-bin/man/man2html?1+shtool-scpp,将其描述为:
该命令是附加的 ANSI C
用于共享的源文件预处理器
cpp(1) 代码段,内部
变量和内部函数。这
这样做的意图来自于写作
ANSI C 中的库。这里有一个常见的
共享内部头文件通常是
用于在之间共享信息
库源文件。
该操作是解析特殊的
在文件中构造,生成一些
这些结构之外的东西
将它们插入到 tfile 中的位置标记处
将输出写入 offile。
此外,这些文件永远不会
触摸或修改。相反,
构造稍后被删除
构建过程的 cpp(1) 阶段。这
唯一的前提是每个文件
有一个 ``"#include ""ofile"""'' 在
顶部。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)