如何将速推设置为其他版本?
How to set boost to a different version?
我一直在使用 Boost 1.70.0,直到我意识到它与 CMake 有问题并且无法编译。然后我切换到 Boost 1.67.0,它在我的 Linux 容器上完美编译。问题是我的开发机器在 Windows 上运行(不幸的是(,当我尝试切换到 1.67.0 时,CMake 一直在 1.70.0 的文件夹中搜索 Boost。
起初,我试图让CMake寻找Boost的确切版本,如下所示:
find_package(Boost 1.67 EXACT)
find_package(Boost 1.67 EXACT REQUIRED COMPONENTS thread)
但是我从错误中看到它仍在查看原始的 1.70.0 位置:
CMake Error at C:/Program Files/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find Boost: Found unsuitable version "0.0.0", but required is
exact version "1.67" (found C:/Program Files/boost_1_70_0)
所以我删除了该文件夹,并收到了相同的错误消息。我尝试使用命令将BOOST_ROOT环境变量设置为 1.67.0 文件夹
setx BOOST_ROOT "C:/Program Files/boost_1_67_0"
但我仍然收到同样的错误。
如何让 CMake 或我的系统忘记 boost 1.70.0 并识别提升 1.67.0?
将我们CMakeList.txt
文件中的变量BOOST_ROOT
设置为所需提升版本的路径,例如:
if(MSVC_VERSION EQUAL 1900)
set(MSVC_VERSION_STRING "vs2015")
set(MSVC_VERSION_YEAR "2015")
elseif(MSVC_VERSION GREATER_EQUAL 1910 AND MSVC_VERSION LESS_EQUAL 1919)
set(MSVC_VERSION_STRING "vs2017")
set(MSVC_VERSION_YEAR "2017")
else()
message(${MSVC_VERSION})
message("Please switch to Visual Studio 14 2015 or Visual Studio 15 2017.")
return()
endif()
find_path(BOOST_ROOT NAMES boost/version.hpp HINTS "C:\thirdparty\${MSVC_VERSION_STRING}\x64\boost_1_67_0")
# [... more cmake stuff ..]
find_package(Boost 1.67.0 COMPONENTS log signals system filesystem python3 REQUIRED)
无需将路径放在 CMakeLists.txt 文件中,您可以在批处理脚本中调用 CMake,例如setup.cmd
这样:
cmake.exe ^
-G "Visual Studio 15 2017 Win64" ^
-HC:your_project ^
-BC:buildyour_project ^
-DBOOST_ROOT=C:thirdpartyvs2017x64boost_1_67_0
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 在其他文件中创建类时在 c++ 项目中不起作用
- Qt版本应该在其他计算机上运行吗?
- 在Visual Studio中单实例Qt应用程序版本5.11.1中,在所有其他窗口的顶部打开Qt MainWindow
- 如何将速推设置为其他版本?
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- 我的版本.exe无法在其他电脑上运行
- 在C++中设置产品ID版本、公司和其他应用程序信息
- 如何在 c++ 中拆分字符串而不将其他库安装到标准 Ubuntu 版本
- 除了制作类的const版本,还有其他选择吗
- 如何使用其他版本的库
- 如何使嵌套类位于模板类中以接受其自身的其他版本
- 为什么具有推导出的返回类型的模板不能被它的其他版本重载?
- 为什么要为char*和w_char*编写一个特殊版本的uninitialized_copy(),而不是为其他基本类型编写