cmake下使用boost,以shared_ptr和make_shared举例

本文详细介绍如何在CMakeLists.txt文件中配置Boost库,包括查找、包含目录、链接库等步骤,同时提供了使用Boost shared_ptr和make_shared的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cmake文件配置

首先需要在CmakeLists.txt文件中加入下面这段
记得“YourExeNameYourSourceCodeName”这两个部分需要替换成自己的源文件名字和自己想生成的目标文件名字

find_package(Boost)
if(Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIRS})
    add_executable(YourExeName YourSourceCodeName.cpp)
    target_link_libraries(main ${Boost_LIBRARIES})
endif()

boost shared_ptr和make_shared举例

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
int main() {
    boost::shared_ptr<int> ptr = boost::make_shared<int>(1);
    std::cout << *ptr << std::endl;
    return 0;
}

参考文献:
[1] https://cmake.org/cmake/help/v3.0/module/FindBoost.html
[2] https://www.boost.org/doc/libs/1_61_0/libs/smart_ptr/shared_ptr.htm

### 解决 `boost/shared_ptr.hpp` 文件未找到的编译错误 当遇到 `fatal error C1083: 无法打开包括文件: “boost/shared_ptr.hpp”: No such file or directory` 错误时,通常是因为编译器未能正确定位到 Boost 库的位置。即使本地确实存在所需的头文件,如果路径配置不正确,仍然会引发此类错误。 #### 路径配置问题分析 在 PCL 的安装过程中,确保所有依赖项(特别是 Boost 库)被正确定位至关重要。对于提到的情况,在 `PCLHeader.h` 中指定的路径可能存在问题,具体表现为将 `-` 写成了下划线[^1]。这表明路径中的字符错误可能导致了查找失败。 为了修正这个问题: - **确认Boost库位置**:验证 Boost 安装目录下的确含有 `shared_ptr.hpp` 头文件。 - **调整CMakeLists.txt或项目设置**: - 对于基于 CMake 的构建系统,可以在项目的 `CMakeLists.txt` 文件中显式指明 Boost 的根目录以及包含子目录。例如: ```cmake set(BOOST_ROOT "/path/to/your/boost/installation") find_package(Boost REQUIRED COMPONENTS system filesystem thread) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) ``` - **命令行参数传递**:如果是通过命令行调用 g++ 或其他编译工具,则需添加相应的选项来告知其 Boost 包含路径。比如使用 `-I` 参数指向 Boost 的 include 文件夹: ```bash g++ -I/path/to/boost/include ... ``` 另外,考虑到操作系统的差异性,Linux 用户可以考虑直接安装预编译版本的 Boost 库包以简化流程。Ubuntu 上可通过以下命令快速获取所需资源并解决问题[^2]: ```bash sudo apt-get update && sudo apt-get install libboost-all-dev ``` 此方法不仅解决了共享对象缺失的问题,同时也提供了完整的开发环境支持,减少了手动配置的风险复杂度[^3]。 #### 示例代码片段展示如何处理这种情况 假设正在编写一段简单的测试程序来验证是否能成功引入 `boost::shared_ptr` 类型定义,那么源码应像这样书写: ```cpp #include <iostream> // 正确导入 boost smart pointer header #include <boost/smart_ptr/shared_ptr.hpp> int main() { using namespace std; cout << "Testing boost shared ptr..." << endl; // 创建一个整数类型的智能指针实例 boost::shared_ptr<int> p(new int(42)); if (*p == 42){ cout << "Success!" << endl; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值