Visual studio 为32位Visual Studio生成PCL项目时,CMake会创建不完整的vtk引用

Visual studio 为32位Visual Studio生成PCL项目时,CMake会创建不完整的vtk引用,visual-studio,visual-studio-2013,cmake,vtk,point-cloud-library,Visual Studio,Visual Studio 2013,Cmake,Vtk,Point Cloud Library,我已经使用CMake和Visual Studio 2013成功地为64位windows构建了PCL。我自己构建了所有依赖项(boost、Flann、QHull和VTK)。现在我需要创建一个32位版本。不幸的是,CMake在引用VTK库时遇到问题。对于64位,它将完整路径添加到visual studio项目文件中,例如“D:\path\to\vtk\64\vtk-6.1.lib”。但对于32位,它只添加了“vtk.lib”。甚至版本号也丢失了,它始终是文件名的一部分。编译器没有机会找到它。由我自己

我已经使用CMake和Visual Studio 2013成功地为64位windows构建了PCL。我自己构建了所有依赖项(boost、Flann、QHull和VTK)。现在我需要创建一个32位版本。不幸的是,CMake在引用VTK库时遇到问题。对于64位,它将完整路径添加到visual studio项目文件中,例如“D:\path\to\vtk\64\vtk-6.1.lib”。但对于32位,它只添加了“vtk.lib”。甚至版本号也丢失了,它始终是文件名的一部分。编译器没有机会找到它。由我自己修补所有PCL项目将非常麻烦

我已经比较了32位和64位的CMakeCache.txt文件。除32/64位差异外,它们是相等的


有人知道我可能做错了什么吗?

PCL CMake脚本使用(VTK)命令加载VTK。程序包的路径由VTK_DIR变量指定。此变量指向VTKConfig.cmake所在的文件夹。对于x64和x86,您将拥有不同的文件夹。由于某种原因,VTKConfig.cmake文件的x86版本为空。在复制和粘贴了x64版本的内容并进行了一些搜索和替换之后,我能够编译这个项目。
所以根本原因是VTKTargets.cmake是空的。但我不知道为什么它是空的。我已经在x64和x86模式下构建了VTK。

请提供复制这种行为的方法。另外,如何在64位平台上编译32位软件包?你使用交叉编译吗?如果是这样,请提供您使用的CMake工具链文件的代码。不幸的是,我不能提供一个最小的示例。PCL库及其依赖项有几GB大。在64位windows上构建32位库不是问题。您可以将CMake指向Visual Studio 2015或Visual Studio 2015 x64。但我现在能够找到解决办法,但不是根本原因。请阅读下面的内容…如果您分别构建和安装x64和x86 VTK,则一个安装可能会影响另一个安装。您是否也在Visual Studio下构建了VTK?是的。我使用CMake生成了两个项目。一个用于x64,一个用于x86。之后,我使用Visual Studio 2013在调试和发布中进行了构建。