在構建它後,我的庫創建的.h文件中有結構體定義..但我無法在相應的.h.in中找到它們。有人可以告訴我所有這些是如何工作的以及從哪裏獲得額外信息?.h?
具體而言:我正在構建用戶空間線程庫pth。它有pth_p.h.in,它不包含我正在查找的結構定義,但是當我構建庫時,會出現一個pth_p.h,它具有我需要的定義。
事實上,我已經搜索過庫中的每一個單獨的文件,並且無法找到它生成結構定義的位置。
在構建它後,我的庫創建的.h文件中有結構體定義..但我無法在相應的.h.in中找到它們。有人可以告訴我所有這些是如何工作的以及從哪裏獲得額外信息?.h?
具體而言:我正在構建用戶空間線程庫pth。它有pth_p.h.in,它不包含我正在查找的結構定義,但是當我構建庫時,會出現一個pth_p.h,它具有我需要的定義。
事實上,我已經搜索過庫中的每一個單獨的文件,並且無法找到它生成結構定義的位置。
.h.in是配置腳本(從configure.ac產生)內可能處理,尋找出
AC_CONFIG_FILES([thatfile.h])
它在.in
文件與他們的價值觀取代了形式@[email protected]
的變量。
編輯:如果我是正確的,你應該重新標記您的問題
第P採用GNU Autoconf,Automake和Libtool只注意到。通過運行./configure
,您將運行一個shell腳本,該腳本最終運行m4以檢測大量不同系統屬性的存在並對多個文件進行更改。
它看起來像它歸結爲./configure
產生從Makefile.in
Makefile
,然後運行通過使一些觸發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 manpage,其描述爲:
此命令是一個額外的ANSI C 源文件預處理器用於共享 cpp(1)cod e分段,內部 變量和內部功能。 的意圖來自於編寫ANSI C中的 庫。這裏共同的 共享內部頭文件通常是 用於共享 庫源文件之間的信息。
操作是在文件中解析特殊構造 ,產生了幾 東西出來,這些結構和 在位置標記通過寫輸出到ofile文件中插入他們tfile 。 此外,文件不會被觸摸或修改爲 。相反, 構造稍後會被構建過程的cpp(1)階段刪除。 唯一的先決條件是每個文件 在 頂部有一個```#include「」ofile「」「''。
關閉,但不完全。 'm4'用於將'configure.ac'或'configure.in'(不建議使用)編譯到'。/ configure'中,這是一個運行整個測試的shell腳本。我以前從來沒有見過shtool-scpp,我不確定我喜歡它還是討厭它。不過,這當然很酷。 – 2010-09-21 04:18:38