【发布时间】:2018-04-18 09:47:15
【问题描述】:
我找到了关于编译与 Harfbuzz 相关的 Freetype 的已知问题的良好文档:http://www.gregwessels.com/dev/2017/05/02/freetype-harfbuzz.html 和这里44184890
但现在它们似乎已经过时了:freetype-2.9 和 harfbuzz-1.7.6
这是我的编译方式:
- 下载Freetype tarball
- 解压压缩包...
- 打开 builds\windows\vc2010\freetype.sln
- 它应该已经很好地生成(作为 dll)
- 下载Harfbuzz
- 解压 freetype 旁边的压缩包...
- 在根级别运行
cmake ./以获得.sln - 它必须已经很好地生成(作为 lib)
此时您有 2 个独立的库不能一起工作,这意味着:
Freetype 不会打开您字体的 GSUB 脚本。(或者我错了)
为此,我需要帮助!我也需要确认!!!
似乎需要在编译时在 Freetype 中启用 Harfbuzz;我找到了一个名为 FT_CONFIG_OPTION_USE_HARFBUZZ
但是在激活它时,在第三个项目中同时使用这两个库时出现了一些编译链接错误:
autofit.obj : error LNK2019: external symbol not found _hb_ft_font_create referenced in function _af_face_globals_new
很高兴知道,hb_ft_font_create 是 harfbuzz 中的一个外部函数。
所以这似乎是一个循环外部问题......我当然没有好的配置,但我浏览了很多文档和帮助,什么也没找到......
-- 编辑-- 两个项目解压后,一般都可以得到这样一棵树:
.
├── freetype-2.9
│ ├── autogen.sh
│ ├── builds
│ │ ├── ...
│ │ └── windows
│ │ └── vc2010 <<<< The .sln to use is in here
│ ├── CMakeLists.txt <<<< It is also good to obtain proper sln
│ ├── configure
│ ├── devel
│ │ ├── ft2build.h
│ │ └── ftoption.h
│ ├── include
│ │ ├── freetype
│ │ └── ft2build.h
│ ├── ...
│ ├── objs
│ │ ├── freetype.dll
│ │ ├── freetype.lib
│ │ ├── README
│ │ └── Win32
│ ├── README
│ ├── README.git
│ └── src
└── harfbuzz-1.7.6
├── ...
├── cmake_install.cmake
├── CMakeLists.txt <<<< The cmake project to obtain proper sln is this one
├── compile
├── ...
├── COPYING
├── CTestTestfile.cmake
├── Debug
│ ├── harfbuzz.lib
│ ├── harfbuzz-subset.lib
│ └── ...
├── depcomp
├── docs
├── gtk-doc.make
├── harfbuzz.sln
├── harfbuzz.vcxproj
├── ...
├── main.dir
│ └── Debug
├── NEWS
├── README
├── README.python
├── RELEASING.md
├── replace-enum-strings.cmake
├── RUN_TESTS.vcxproj
├── RUN_TESTS.vcxproj.filters
├── src
│ ├── *.hh
│ └── *.cc
├── test
├── THANKS
├── TODO
├── util
└── Win32
└── Debug
【问题讨论】:
-
请列出您所采取的步骤,您将其称为:
extract and so on... -
在并排解压缩源代码后,我添加了一个缩短的树转储。我已经使用7zip这样做了,但我想它相当于经典的
tar -xvf ... -
该解决方案似乎可以正常编译freetype(根本没有改变,照原样)但修改harfbuzz的CMakeFiles.txt(或CMakeCache已经构建)以激活链接freetype
-
我能够得到我想要的:从 sln 或从 cmake 编译 freetype。并在 harfbuzz freetype 用法中激活(
option(HB_HAVE_FREETYPE "Enable freetype interop helpers" ON)行)。但我也使用 hack,添加 harfbuzzFREETYPE_INCLUDE_DIR_freetype2、FREETYPE_INCLUDE_DIR_ft2build、FREETYPE_LIBRARY_DEBUG和FREETYPE_LIBRARY_RELEASENormaly,我不应该那样做......我如何配置 freetype 和/或 harfbuzz 以使用这个“图书馆”东西正常吗? Cmake 的概念非常混乱。
标签: c++ c visual-studio compiler-errors extern