最近学习 C++ 后,我在 CMake 项目中使用 Boost 时遇到了挑战。我在 CMakeLists.txt 文件中进行了一些配置,但没有收到来自 CMake 的任何错误。但是,我不断遇到错误,指出当我包含“boost/lexical_cast.hpp”时找不到“boost/lexical_cast.hpp”文件。
以下是一些可能有助于解决我的问题的信息。
我使用的是CLion 2023.3.3,工具链如下。
我向 CMake 添加了一个选项以便找到 Boost。
这是我的 CMakeLists.txt。
cmake_minimum_required(VERSION 3.25)
project(cpp_demo)
set(CMAKE_CXX_STANDARD 17)
find_package(Boost CONFIG REQUIRED)
if (NOT Boost_FOUND)
message(FATAL_ERROR "Boost library not found")
endif ()
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
message("Boost version " ${Boost_VERSION})
message(${Boost_INCLUDE_DIRS})
add_executable(lexcast cpp-primer-plus/sample/chapter-18/lexcast.cpp)
#target_include_directories(lexcast PRIVATE ${Boost_INCLUDE_DIRS})
CMake 输出如下。
当我尝试执行代码时,输出表明它在
${Boost_INCLUDE_DIRS}
宏的值之前添加了当前项目的路径。
我不知道问题是由CMake还是Cygwin引起的,谁能帮我解决这个问题。
希望能够正常包含Boost头文件。
我不使用 Clion,但这似乎是混合 Cygwin 和 Windows PATH 的经典案例。
Cygwin Boost 库的最新版本是 1.66
https://cygwin.com/packages/x86_64/libboost-devel/libboost-devel-1.66.0-1
如果您安装了该软件包,其标题位于
/usr/include/boost/
下 libboost-devel
所以编译器的调用应该有
-I/usr/include/boost
CygWin CMAKE 无法将 Windows PATH 理解为
C:\
,它期望 POSIX 路径为 /usr/include/boost/