CMake和Visual Studio构建错误

时间:2013-09-16 09:27:42

标签: c++ visual-studio-2012 cmake freetype freetype2

我一直在尝试使用cmake编译郁金香来生成visual studio 2012项目文件。这给了我很多麻烦。我不知道如何建立它。我一直试图让视觉工作室建立这个4天,我非常沮丧。基本上,我按照here步骤,然后根据these instructions设置变量CMAKE_LIBRARY_PATH和CMAKE_INCLUDE_PATH。

要到达我所在的位置,您所要做的就是download 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构建它。
  8. 在这些说明中以及在获取CMake生成visual studio构建文件的过程中,它特别要求freetype的位置。但是在我的构建中,它并不知道如何链接freetype库。

    Here are the errors that I get

    Here is my CMakeCached.txt

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

2 个答案:

答案 0 :(得分:1)

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

这很有可能发生,因为郁金香项目中的target_link_libraries调用被跳过或被调用的库名与磁盘上的库名不匹配。

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

郁金香项目中可能存在错误,或者您的自由类型的构建/安装可能出现问题......

UPDATE AFTER SOME CHAT:

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

答案 1 :(得分: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是郁金香源中包含的第三方库:

thirdparty\gzstream

thirdparty\gzstream\CMakeLists.txt

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

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

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