- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经按照 Getting Started on Windows 中的说明下载并构建了 Boost文档。现在我想通过 CMake 将示例程序链接到该版本的 Boost。
这是我当前的文件夹结构:
cmake-boost
- boost_1_73_0/ (Boost folder)
- build/
- CMakeLists.txt
- cmake-boost.cpp
这是我的 CMakeLists.txt
文件的内容:
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(cmake-boost LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(BOOST_ROOT "boost_1_73_0")
set(BOOST_LIBRARYDIR "boost_1_73_0/stage/lib")
find_package(Boost REQUIRED COMPONENTS regex)
if(Boost_FOUND)
message(STATUS "Success!")
endif()
add_executable(cmake-boost cmake-boost.cpp)
target_link_libraries(cmake-boost
PUBLIC
Boost::regex
)
如果我从 build
文件夹中运行 cmake ..
,我得到的是以下消息,说明它找不到请求的库。
CMake Warning at C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:896 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1018 (_Boost_COMPONENT_DEPENDENCIES)
C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1694 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:12 (find_package)
CMake Error at C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:2124 (message):
Unable to find the requested Boost libraries.
Boost version: 1.73.0
Boost include path:
C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0
Could not find the following Boost libraries:
boost_regex
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
CMakeLists.txt:12 (find_package)
-- Configuring incomplete, errors occurred!
我的 CMakeFile 有什么问题?
更新:
这是 cmake -DBoost_DEBUG=ON ..
的输出
-- Building for: Visual Studio 16 2019
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.17763.
-- The CXX compiler identification is MSVC 19.26.28806.0
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.26.28801/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1181 ] _boost_TEST_VERSIONS = 1.70.0;1.70;1.69.0;1.69
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1183 ] Boost_USE_MULTITHREADED = TRUE
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1185 ] Boost_USE_STATIC_LIBS =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1187 ] Boost_USE_STATIC_RUNTIME =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1189 ] Boost_ADDITIONAL_VERSIONS =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1191 ] Boost_NO_SYSTEM_PATHS =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1259 ] Declared as CMake or Environmental Variables:
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1261 ] BOOST_ROOT = boost_1_73_0
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1263 ] BOOST_INCLUDEDIR =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1265 ] BOOST_LIBRARYDIR = boost_1_73_0/stage/lib
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1267 ] _boost_TEST_VERSIONS = 1.70.0;1.70;1.69.0;1.69
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1342 ] Include debugging info:
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1344 ] _boost_INCLUDE_SEARCH_DIRS = boost_1_73_0/include;boost_1_73_0;PATHS;C:/local/boost_1_70_0;PATHS;C:/local/boost_1_70;PATHS;C:/local/boost_1_69_0;PATHS;C:/local/boost_1_69;PATHS;C:/boost/include;C:/boost;/sw/local/include
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1346 ] _boost_PATH_SUFFIXES = boost-1_70_0;boost_1_70_0;boost/boost-1_70_0;boost/boost_1_70_0;boost-1_70;boost_1_70;boost/boost-1_70;boost/boost_1_70;boost-1_69_0;boost_1_69_0;boost/boost-1_69_0;boost/boost_1_69_0;boost-1_69;boost_1_69;boost/boost-1_69;boost/boost_1_69
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1366 ] location of version.hpp: C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/boost/version.hpp
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1391 ] version.hpp reveals boost 1.73.0
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1447 ] Boost_LIB_PREFIX =
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1449 ] Boost_NAMESPACE = boost
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1484 ] guessed _boost_COMPILER = -vc141;-vc140
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1494 ] _boost_MULTITHREADED = -mt
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1578 ] _boost_RELEASE_ABI_TAG = -
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1580 ] _boost_DEBUG_ABI_TAG = -gd
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1643 ] _boost_LIBRARY_SEARCH_DIRS_RELEASE = boost_1_73_0/stage/lib;boost_1_73_0/lib;boost_1_73_0/stage/lib;boost_1_73_0/lib64-msvc-14.1;boost_1_73_0/lib64-msvc-14.0;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/stage/lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib64-msvc-14.1;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib64-msvc-14.0;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib64-msvc-14.1;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib64-msvc-14.0;C:/local/boost_1_70_0/lib64-msvc-14.1;C:/local/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_70/lib64-msvc-14.1;C:/local/boost_1_70/lib64-msvc-14.0;C:/local/boost_1_69_0/lib64-msvc-14.1;C:/local/boost_1_69_0/lib64-msvc-14.0;C:/local/boost_1_69/lib64-msvc-14.1;C:/local/boost_1_69/lib64-msvc-14.0;C:/boost/lib64-msvc-14.1;C:/boost/lib64-msvc-14.0;PATHS;C:/boost/lib;C:/boost;/sw/local/lib_boost_LIBRARY_SEARCH_DIRS_DEBUG = boost_1_73_0/stage/lib;boost_1_73_0/lib;boost_1_73_0/stage/lib;boost_1_73_0/lib64-msvc-14.1;boost_1_73_0/lib64-msvc-14.0;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/stage/lib;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib64-msvc-14.1;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/../lib64-msvc-14.0;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib64-msvc-14.1;C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0/lib64-msvc-14.0;C:/local/boost_1_70_0/lib64-msvc-14.1;C:/local/boost_1_70_0/lib64-msvc-14.0;C:/local/boost_1_70/lib64-msvc-14.1;C:/local/boost_1_70/lib64-msvc-14.0;C:/local/boost_1_69_0/lib64-msvc-14.1;C:/local/boost_1_69_0/lib64-msvc-14.0;C:/local/boost_1_69/lib64-msvc-14.1;C:/local/boost_1_69/lib64-msvc-14.0;C:/boost/lib64-msvc-14.1;C:/boost/lib64-msvc-14.0;PATHS;C:/boost/lib;C:/boost;/sw/local/lib
CMake Warning at C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:896 (message):
New Boost version may have incorrect or missing dependencies and imported
targets
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1018 (_Boost_COMPONENT_DEPENDENCIES)
C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1694 (_Boost_MISSING_DEPENDENCIES)
CMakeLists.txt:12 (find_package)
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1833 ] Searching for REGEX_LIBRARY_RELEASE: boost_regex-vc141-mt-x64-1_73;boost_regex-vc141-mt;boost_regex-vc140-mt-x64-1_73;boost_regex-vc140-mt;boost_regex-mt-x64-1_73;boost_regex-mt;boost_regex-mt;boost_regex
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1886 ] Searching for REGEX_LIBRARY_DEBUG: boost_regex-vc141-mt-gd-x64-1_73;boost_regex-vc141-mt-gd;boost_regex-vc140-mt-gd-x64-1_73;boost_regex-vc140-mt-gd;boost_regex-mt-gd-x64-1_73;boost_regex-mt-gd;boost_regex-mt;boost_regex
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1960 ] Boost_FOUND = 1
CMake Error at C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:2124 (message):
Unable to find the requested Boost libraries.
Boost version: 1.73.0
Boost include path:
C:/Users/djc3ho/Documents/Programming/cpp/_Testing/cmake_boost/boost_1_73_0
Could not find the following Boost libraries:
boost_regex
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of
Boost.
Call Stack (most recent call first):
CMakeLists.txt:12 (find_package)
我注意到有两件事可能是错误的:
-- [ C:/Program Files/CMake/share/cmake-3.14/Modules/FindBoost.cmake:1484 ] guessed _boost_COMPILER = -vc141;-vc140
但如果我看.lib
文件是在构建boost时生成的,它们的名字中有-vc142
boost_regex-vc141-mt-x64-1_73
但我的 boost build startet 中的 lib
文件与 lib
类似 libboost_regex -vc142-mt-x64-1_73.lib
我通过将 -DBoost_COMPILER=-v142
添加到 cmake
命令解决了第一个问题。但是我无法使用 -DBoost_LIB_PREFIX=lib
Boost_LIB_PREFIX
最佳答案
我找到了解决办法。正如我在对我的问题所做的最后一次编辑中提到的,编译器的第一个问题可以通过 -DBoost_COMPILER=-vc142
选项修复。第二个可以通过使用 -DBoost_USE_STATIC_LIBS=ON
来解决。
因此 CMakeLists
中用于 boost 的 set
block 现在是:
set(BOOST_ROOT "boost_1_73_0")
set(Boost_COMPILER "-vc142")
set(Boost_USE_STATIC_LIBS ON)
设置了这些变量后,CMake 可以毫无问题地运行。
关于c++ - CMake 在 Windows 上的自定义位置上找不到 Boost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62404625/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!