2

我一直在尝试使用 cmake 编译 tulip 以生成 Visual Studio 2012 项目文件。这给我带来了很多麻烦。我不知道如何构建它。我一直试图让视觉工作室来构建这个已经 4 天了,我非常沮丧。本质上,我按照这里的步骤,然后根据这些说明设置变量 CMAKE_LIBRARY_PATH 和 CMAKE_INCLUDE_PATH 。

要到达我所在的位置,您所要做的就是下载 tulip,并且:

  1. 解压它,在这个源目录之外创建一个单独的构建目录
  2. 打开 CMake-gui 到源和构建目录
  3. 点击配置。检查使用qt5,告诉它qmake在哪里(确保它是qt5)
  4. 您需要一些依赖项,如 The Independent CMake 教程中所述。获取所有这些依赖项
  5. 当您继续点击配置时,指定它在出错时要求的每个目录。它应该要求 freetype、glew、zlib 和 sphinx。它不应该询问 libxml 或 libpng 或 libjpeg 在哪里。我不知道为什么它不要求这些。
  6. 生成,然后浏览到您生成的 ALL_BUILD。用visual studio打开
  7. 尝试用visual studio构建它。

在这些说明中以及在让 CMake 生成 Visual Studio 构建文件的过程中,它特别要求 freetype 的位置。但是在我的构建中,它不知道如何链接 freetype 库。

这是我得到的错误

这是我的 CMakeCached.txt

我知道很多人不想完全尝试复制构建环境,所以我已经将构建目录上传到了 Dropbox。您可以将整个东西拉下来,然后在 cmake gui 中打开它并在那里打开 Visual Studio 文件。 https://www.dropbox.com/sh/qsvukh9t5gb6bvt/tOfOBxWgd0

4

2 回答 2

1

您指向的链接器错误(主要是“未解决的外部”错误)表明链接命令行上缺少库。

这很可能发生,因为 tulip 项目中的 target_link_libraries 调用要么被跳过,要么被调用的库名称与磁盘上的库名称不匹配。

在 Visual Studio 中打开解决方案并右键单击项目并选择“属性”——查看“附加依赖项”字段中的“链接器 > 输入”面板。这应该列出它想要链接到的所有库。那里列出了一个自由类型库吗?该库是否存在于磁盘上的引用位置?

tulip 项目中可能有错误,或者您的 freetype 的构建/安装可能有问题......

UPDATE AFTER SOME CHAT:

或者,您可能有一些为x86构建的库,一些为x64构建的库......或者一些用于调试,一些用于发布......或者甚至一些使用MinGW编译器,一些使用Visual Studio编译器。如果是这种情况,请从头开始,并使用一致的编译器、配置类型和架构构建所有内容。然后再次报告更新,看看问题是否仍然存在。

于 2013-09-16T15:58:41.710 回答
0

我和戴夫一起,

您应该尝试逐个修复错误。第一个错误似乎是链接错误:

Error   1   error LNK2019: unresolved external symbol gzread referenced in function "public: virtual int __cdecl gzstreambuf::underflow(void)" (?underflow@gzstreambuf@@UEAAHXZ)    C:\Users\kenne_000\tulip-build\tulip-build-debug\thirdparty\gzstream\gzstream.obj   gzstream

gzstream 是 tulip 源中包含的第三方库:

thirdparty\gzstream

thirdparty\gzstream\CMakeLists.txt

您可以看到缺少的符号应该来自 ZLIB。但是您的 CMakeCache.txt 表明

ZLIB_LIBRARY:FILEPATH=C:/Users/kenne_000/dependencies/zlib128-dll/lib/zdll.lib

被发现。

所以问题可能是,这个依赖项是用同一个编译器编译的吗?您没有特定于编译器的名称修改问题吗?

于 2013-09-16T18:58:48.883 回答