我们正在开发一个需要在Windows和Linux上运行的C ++ / CMake项目。在Windows上,我们必须使用32位和64位的Visual Studio版本。为了减轻我们团队中的依赖性问题,我们为每个配置手动编译了许多依赖项(vs2013_x64,vs2013_x86,vs2012_x64,vs2013_x86 ......)并将它们(使用make install或类似命令)安装到每个配置的公共文件夹中组态。现在我们有一个名为" vs2013_x64"的文件夹。例如,它包含与/ usr在linux上类似的文件夹:CMake,include,lib,share,...
现在我的问题是:我如何设置CMake,以便它像对待Linux上的/ usr一样对待这个vs2013_x64文件夹? 例如,我发现了许多似乎相关的变量 CMAKE_FIND_ROOT_PATH和CMAKE_SYSROOT。但是,例如将它们设置为我的vs2013_x64文件夹不起作用:找不到vs2013_x64 / CMake文件夹中的FindXXX.cmake文件,即使我手动将CMAKE_MODULE_PATH设置为该CMake文件夹,Find *脚本也无法找到他们正在寻找包括,因为似乎没有搜索到vs2013_x64 / include文件夹。
有效的解决方案是设置CMAKE_PREFIX_PATH。这很好,几乎就是我所需要的,但是让我们说在Linux上,我不希望它在任何情况下都能看到/ usr。如果我理解正确的话,使用PREFIX_PATH解决方案是不可能的。 根据我从文档中理解的内容, CMAKE_FIND_ROOT_PATH更易于配置,并且具有许多其他变量,例如CMAKE_FIND_ROOT_PATH_MODE_PROGRAM,CMAKE_FIND_ROOT_PATH_MODE_LIBRARY和CMAKE_FIND_ROOT_PATH_MODE_INCLUDE。这让我相信FIND_ROOT_PATH是我实际上应该做的 - 但我无法让它工作
我想做的事情有意义吗?任何人都可以澄清何时以及如何使用什么?理想情况下,我想要一个解决方案,允许我将搜索路径设置为Windows上的vs2013_x64文件夹,默认为Linux上的/ usr,但也可以选择设置为包含lib / include / cmake文件夹的另一个目录。此外,如果仅在配置的路径中进行搜索而在其他任何地方进行搜索(以避免错误地选择在系统范围内安装的库),那将是很好的。
谢谢!