Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法为cmake指定BOOST\u根_Boost_Cmake_Version_Environment Variables - Fatal编程技术网

无法为cmake指定BOOST\u根

无法为cmake指定BOOST\u根,boost,cmake,version,environment-variables,Boost,Cmake,Version,Environment Variables,我安装了多个版本的Boost(Windows 7/MinGW)。我需要使用一个特定的(1.53.0) 我在CMakeFiles.txt文件中定义了BOOST\u ROOT:SET(BOOST\u ROOT C:/BOOST\u 1\u 53\u 0/),但我一直收到以下错误: >cmake。 BOOST\u ROOT=C:/BOOST\u 1\u 53\u 0/ C:/Program Files(x86)/CMake 2.8/share/CMake-2.8/Modules/FindBoost处的

我安装了多个版本的Boost(Windows 7/MinGW)。我需要使用一个特定的(1.53.0)

我在CMakeFiles.txt文件中定义了BOOST\u ROOT:
SET(BOOST\u ROOT C:/BOOST\u 1\u 53\u 0/)
,但我一直收到以下错误:

>cmake。
BOOST\u ROOT=C:/BOOST\u 1\u 53\u 0/
C:/Program Files(x86)/CMake 2.8/share/CMake-2.8/Modules/FindBoost处的CMake错误。CMake:1191(消息):
找不到请求的Boost库。
Boost版本:1.48.0
Boost包含路径:C:/Boost/include/Boost-1_48
检测到的Boost版本太旧。请求的版本为1.53(或
更新的)。
找不到以下Boost库:
boost\u文件系统
未找到任何Boost库。您可能需要将BOOST_LIBRARYDIR设置为
包含Boost库或Boost_根目录的目录
促进
我还将BOOST_ROOT定义为一个环境变量,但结果相同


为什么cmake仍在寻找旧版本?

我也曾为同样的问题挣扎过一段时间。如果这与我遇到的问题相同,那么问题是您没有在没有任何缓存的情况下完全刷新运行CMake配置。一旦它运行一次并找到默认安装(C:\Boost或/usr/include),它将继续找到该安装,而不管Boost\u ROOT的值如何。因此,请确保完全删除所有生成的生成文件。然后将BOOST_ROOT设置为所需的单独安装,它应该可以正常工作

jaor在前面的链接问题中也提到了这一点:

试试这个:

cmake -DBOOST_ROOT=path

如果您使用的是Visual Studio的Boost库的预编译版本,那么它们具有特定的MSVC版本和bitness风格。我需要将CMake指向那个特定的位置——在我的例子中,将BOOST_ROOT设置为C:/local/BOOST_1_59_0,将BOOST_LIBRARYDIR设置为C:/local/BOOST_1_59_0/lib64-msvc-11.0有帮助。

请看一看:我如何让CMake找到我的BOOST安装@很遗憾,我需要在Windows7上构建它。试着运行
cmake-DBoost_DEBUG=ON
获取有关CMake正在做什么的更多信息。如果在指定的
boost\u ROOT
路径中找不到合适版本的boost,它将继续在系统文件夹中查找。1.53版本可能不适合,例如,如果您将boost编译成共享库,但在您的CMakeLists.txt中,您没有指定
设置(boost\u USE\u STATIC\u libs OFF)
@Fraser:在我的CMakeLists.txt文件中,我有:
设置(boost\u USE\u STATIC\u libs ON)
设置(boost\u USE\u STATIC\u RUNTIME ON)
@Pietro-这只是一个可能出错的例子。如果粘贴运行
cmake的输出,那么调试就最容易了-DBoost_DEBUG=ON
并提供boost 1.53库的全名(这些名称通常能提供有关libs是如何构建的一点信息),你是个英雄。对我来说很有用!请注意,经过一些尝试和错误之后,可能需要清理构建目录。(我得到了CMake错误:源目录“/my/boost/path”在清理之前似乎不包含CMakeLists.txt)