我有一个非常简单的CMake文件,它在Linux上可以正常工作,但在Windows上却说找不到boost(尽管它似乎已经找到了,因为它会显示“找到了合适的版本”)。以下是原始构建文件:
cmake_minimum_required(VERSION 3.16.3)
project(filecompare)
set(CMAKE_CXX_STANDARD 20)
find_package(Boost 1.73.0 COMPONENTS program_options)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(filecompare filecompare.cpp)
target_link_libraries(filecompare ${Boost_LIBRARIES})
endif()
CMake 输出:
-- Could NOT find Boost (missing: Boost_INCLUDE_DIR program_options) (Required is at least version "1.73.0")
-- Configuring done
-- Generating done
-- Build files have been written to: C:/repos/filecompare/cmake-build-debug
看起来它无法自己找到库,因此我在find_package之前添加了这些行:
SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "C:/local/boost_1_73_0")
SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "C:/local/boost_1_73_0/lib64-msvc-14.2")
现在它似乎找到了库,但实际上没有,以下是输出结果:
-- Could NOT find Boost (missing: program_options) (found suitable version "1.73.0", minimum required is "1.73.0")
-- Configuring done
-- Generating done
-- Build files have been written to: C:/repos/filecompare/cmake-build-debug
我尝试设置以下内容:
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
SET(BOOST_ROOT "C:/local/boost_1_73_0/boost")
但这也没有帮助。那么我在这里做错了什么?我正在使用CLion和VisualStudio 2019上的clang-cl。
find_package(Boost)
之前添加set(Boost_DEBUG ON)
并重新运行配置。输出将包含正在搜索的实际 Boost 库和搜索位置的信息。然后将此信息与您 Boost 安装中拥有的文件进行比较。 - Tsyvarevfind_package
调用中添加REQUIRED
关键字,则 CMake 将自动终止,如果未找到 Boost。因此,您可以省略对Boost_FOUND
变量的检查。 - Tsyvarev