CMake 和 Visual Studio 构建错误

CMake And Visual Studio build errors

本文关键字:构建 错误 Studio Visual CMake      更新时间:2023-10-16

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

要到达我所在的位置,您所要做的就是下载郁金香,然后:

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

在这些说明中,以及在让 CMake 生成 Visual Studio 构建文件的过程中,它专门询问 freetype 的位置。但是在我的构建中,它不知道如何链接自由类型库。

这是我收到的错误

这是我的CMakeCached.txt

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

指向的链接器错误(主要是"未解决的外部"错误)指示链接命令行上缺少库。

发生这种情况很可能是因为郁金香项目中target_link_libraries调用要么被跳过,要么使用与磁盘上的库名称不匹配的库名称进行调用。

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

郁金香项目中可能存在错误,或者您的 freetype 构建/安装可能存在问题......

UPDATE AFTER SOME CHAT:

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

我和戴夫一起做,

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

Error   1   error LNK2019: unresolved external symbol gzread referenced in function "public: virtual int __cdecl gzstreambuf::underflow(void)" (?underflow@gzstreambuf@@UEAAHXZ)    C:Userskenne_000tulip-buildtulip-build-debugthirdpartygzstreamgzstream.obj   gzstream

GZSTREAM是郁金香源中包含的第三方库:

thirdpartygzstream

thirdpartygzstreamCMakeLists.txt

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

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

被发现。

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