• clion 安装 boost 库


    不保证有效,很多教程的 cmake 都是带版本号的

    1、先安装 boost

    brew install boost

    2、clion 工程的 CMakeLists.txt 需要修改,这是我的 CMakeLists.txt,带详细注释

    1. cmake_minimum_required(VERSION 3.25)
    2. project(cliontest) # cliontest 是工程名称,后面用到
    3. set(CMAKE_CXX_STANDARD 17)
    4. FIND_PACKAGE(Boost REQUIRED COMPONENTS date_time filesystem system thread) # COMPONENTS 后面都是库名
    5. message(WARNING ${Boost_VERSION_STRING}) # 打印版本号
    6. if(Boost_FOUND)
    7. include_directories(${Boost_INCLUDE_DIRS}) # 包含头文件
    8. add_executable(cliontest main.cpp) # 先添加执行文件
    9. target_link_libraries(cliontest ${Boost_LIBRARIES}) # 再添加库
    10. endif()

    CMakeLists.txt 文件区分大小写

    3、重新构建(清理再构建,或者直接重新构建)(test 是我的项目名)

    4、如果 cpp 写代码没有智能提示(输入 #include 时会有智能提示),比如下面还是标红,可以尝试重启 clion (如果第 3 步没有 error 的报错)

    #include 

    5、测试代码,如果编译不报错就行

    1. #include
    2. #include
    3. int main() {
    4. return 0;
    5. }

    故障排查

    1、问题一

    ninja: error: unknown target 'cliontest'

    我遇到的情况是 FIND_PACKAGE 写的有问题

    2、问题二

    ld: symbol(s) not found for architecture arm64
    

    问题表面是 arm64 没有找到支持的库,关于 boost,实际上是 CMakeLists.txt 没有正确引入对应的库,比如上面我的 FIND_PACKAGE,我在最后指定了

    date_time filesystem system thread

    像 boost 必须手动指定你要链接的库名,不然你使用 target_link_libraries 去链接库的时候,这个变量 ${Boost_LIBRARIES} 就是空值,链接(需要库的)必报错,比如你要使用 boost 里的 thread,FIND_PACKAGE 不加 thread 必编译不过,关于详细说明在 FindBoost.cmake 这个文件里

    参考

    FindBoost — CMake 3.12.4 Documentation

  • 相关阅读:
    vue3与vue2的不同内容
    Apache Doris系列之:数据模型
    我的Quick Latex For Obsidian-Setting(持续更新)
    Postgresql 主从复制+主从切换(流复制)
    Redis之性能指标、监控方式
    虚拟机安装问题,遇到报错,求解
    Python基础入门笔记
    嵌入式分享合集54
    硬盘格式化怎么选?NTFS/FAT32/exFAT
    ant Design vue中a-row 内容不会垂直居中
  • 原文地址:https://blog.csdn.net/qq_38781075/article/details/133172836