1
A
回答
3
使用標準的AC_CHECK_HEADERS
宏。
它將爲標題創建正確的預處理器定義。
例如:
AC_CHECK_HEADERS([somepath/foo.h someotherpath/foo.h])
將創建預處理器HAVE_SOMEPATH_FOO_H
或HAVE_SOMEOTHERPATH_FOO_H
這取決於所述報頭的被發現限定。或者如果兩個頭都找到了。使用這些宏來決定包含哪個頭。
1
維護人員不擔心這些事情。任何合理構建的發行版都將被設置,以便預處理程序可以在系統上安裝它(而不是用戶的$ HOME或其他非標準位置)時找到頭文件。如果將標題安裝在非標準位置,則設置工具鏈以查找標題是特定於平臺的任務,最容易在Linux中通過設置CPPFLAGS
完成。例如,用戶可能會遇到
./configure CPPFLAGS=-I/p/a/t/h
(配置與舊版本的autoconf生成的腳本可能需要調用是CPPFLAGS=-I/p/a/t/h ./configure
)或她可能會增加/p/a/t/h
到CPATH
,或使用其他任何可用的方法來通知預處理哪裏尋找包含文件。作爲維護者,所有你需要做的是確保配置腳本檢查用戶已正確設置工具鏈,而你做到這一點,包括AC_CHECK_HEADERS
在configure.ac
調用:
AC_CHECK_HEADERS([foo.h])
相關問題
- 1. 條件包括
- 2. autotools:做「檢查」時不包括庫
- 3. 包括帶條件
- 4. 有條件包括與Rabl的
- 5. 有條件包括在HTML JS文件
- 6. 有條件包括源文件
- 7. WordPress的條件JavaScript包括
- 8. 項目的參考條件包括有多個條件
- 9. MSQL加入包括條件
- 10. LINQ包括與條件
- 11. PHP包括與條件
- 12. IE CSS條件包括
- 13. 包括?條件HAML視圖
- 14. Path元素包括條件
- 15. JSON包括與條件
- 16. 的ActiveRecord找到包括,在條件包括不影響父
- 17. Autotools:包括一個預編譯的第三方庫
- 18. Rails的as_json包括與條件
- 19. 包括期望的條件語句
- 20. lupdate和條件包括以pro文件
- 21. HOWTO:條件包括頭文件
- 22. eclipse cdt autotools包括其他工作區項目源
- 23. Autotools發佈中包含哪些文件
- 24. EF凡的條款包括
- 25. 有條件的評論,包括IE> 8或!IE的內容?
- 26. 結合,針對所有條款包括
- 27. 有條件地包括其他生成文件
- 28. 有條件地包括JavaScript文件中XBL
- 29. 有條件地包括取決於iOS版本的標題
- 30. 有條件地包括項目組中的項目
謝謝。漂亮和整潔。 :) – kobrien 2013-03-27 11:53:09
不!項目的維護者(編寫configure.ac的人)不應該檢查不同的路徑!正確的用法只是'AC_CHECK_HEADERS([foo.h])',用戶正確設置'CPPFLAGS'或者設置工具鏈來查找標題。這對於項目維護者來說不是問題,而是對用戶來說。 – 2013-04-06 11:32:47
考慮用戶在'/ tmp/foo/include'中安裝'foo.h'的用例:維護人員不能合理地將'/ tmp/foo/include/foo.h'放入configure.ac! – 2013-04-06 11:36:35