freeType移植總結①——使用keil編譯freeType2庫

  在各個技術博客搜索相關資料後,終於將freeType的源碼用keil工程編譯通過,這裏記錄一下步驟和遇到的問題。

  因爲網上的資料都是舊版本freeType的工程,這裏博主使用的是freeType2.9.1版本,下載地址

  下面是簡單的步驟

  1、添加源文件:

  

  其中,FreeTypeInc可以不添加,主要是爲了方便閱讀修改源文件。

  2、添加對應的頭文件路徑,(在移植過程中發現:許多沒有添加到工程的.C文件會通過#include  xxx.C的方式調用,因此可以參考官方源碼的doc文檔查看.C之間的依賴關係,來決定需要包含哪些文件夾)。這裏需要包含的文件夾路徑如下:

  

  到這裏工程源文件添加完成,首次編譯會報錯,錯誤信息如下:

  gui\freeType2.9.1\src\base\ftsystem.c(30): error:  #13: expected a file name

    #include FT_INTERNAL_DEBUG_H

  在新版本freeType中,有一些頭文件是以宏的形式被包含的,這裏的錯誤提示這個宏沒有被定義,通過sourceInsight 找到定義的文件然後在ft2build.h中定義頭文件後,還是出錯。

  遇到這個問題後,重新認識了include的功能,就是將其被包含的文件全部在包含位置展開,所以頭文件的包含是作爲局部代碼全部拷貝的。

  最終問題的解決是在stackFlow上找到靈感:

  在ft2build.h的最前面添加如下代碼:

1 #ifndef FT2_BUILD_LIBRARY
2 #define FT2_BUILD_LIBRARY
3 #endif

  編譯通過,到此,移植工作有了部分進展,也給自己增加了些許信心,後續工作是導入TFT字庫,獲取設定大小的字號,並將對應範圍內的漢字的位圖信息以文件的格式存在,方便在系統運行時直接使用。

使用這種方案是處於對性能的考慮,因爲是嵌入式系統,字庫的渲染嚴重影響系統的實時性,折中的辦法就是提前將字體完成渲染之後預先存儲在系統的flash當中,在顯示字體的時候直接使用。如果大家還有什麼好的方案,希望能指點一二。

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章