无法找到filesystem头文件

无法找到filesystem头文件

一、前言

这段时间接老板命令,做目标识别模型的嵌入式部署。需要将模型运行环境编译后打包到瑞芯微开发板上运行,在此之前我对原C++文件做过修改,为了能实现与厂商提供的数据接口对接。

我在用CMake打包过程中,C++推理文件需要用filesystem头文件的功能遍历文件夹,以读取相关数据,然而一次次的失败让我心生烦躁,具体表现如下:

/17106/Pengcaiping/rknpu-master/rknn/rknn_api/examples/rknn_yolov5_demo/src/main.cc:28:23: fatal error: filesystem: No such file or directory
 #include <filesystem>
                       ^
compilation terminated.
CMakeFiles/rknn_yolov5_demo.dir/build.make:110: recipe for target 'CMakeFiles/rknn_yolov5_demo.dir/src/main.cc.o' failed
make[2]: *** [CMakeFiles/rknn_yolov5_demo.dir/src/main.cc.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/rknn_yolov5_demo.dir/all' failed
make[1]: *** [CMakeFiles/rknn_yolov5_demo.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

无论我怎么试,都治不好,后来经过查相关资料是C++标准的问题,于是我升级了G++编译器到9.0版本,该版本已经严格支持C++17标准,且我在本地通过G++命令运行包含了filesystem头文件测试程序也成功了,但用CMake就怎么也弄不成功。

此刻我的心,好吧用这个表情包表达一下😂:

在这里插入图片描述

最后还是老老实实,把CMake系统学了一遍回来弄好的,我只能说,这些东西真的是个勾八。

二、解决方案

注意:下面编写的所有的文件都在同一个目录下

  1. 遇事先升级,编译器,如果你的运行环境已经是root用户则运行下面命令时要删除sudo

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt update
    //这里的版本根据你的需要来,但一般比较新
    sudo apt install gcc-9 g++-9
    
    # 修改软链接
    cd /usr/bin
    sudo rm gcc g++
    sudo ln -s gcc-9 gcc
    sudo ln -s g++-9 g++
    
  2. 写测试程序,在你的目录下创建一个test.cpp,内容如下

    #include <iostream>
    #include <filesystem>
     
    int main()
    {
        std::filesystem::path current_directory = std::filesystem::current_path(); // g++ 9.4
        std::cout << "current directory: " << current_directory << std::endl;
        return 0;
    }
    
  3. 编译测试程序

    g++ test.cpp -std=c++17
    
  4. 运行测试程序

    ./a.out
    

    若运行正确,则必然会输出你的CPP文件所在目录的路径

  5. 编写CMake文件

    //CMakeLists.txt
    project(test) //设置项目名词
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -s -O3")  //设置编译器标准及优化级别
    add_executable(test test.cpp) //添加可执行文件(即将要被编译的)
    target_link_libraries(test stdc++fs) //链接库
    
  6. 编译并安装CMake文件

    cmake .
    make
    
  7. 执行编译好的文件

    ./test
    

    如果输出成果,则表示这次安装成功了,否则还有问题。

三、心灵的涤荡

孤独,是一种很高级的享受,是一种摆脱了人际关系的烦扰后,内心和自然、和周遭环境的一种直接接触。如果说寂寞是无人搭理而被动产生的一种情绪,那么孤独则是自己刻意选择独处的一种状态。
—— 郭城《人间行走:向着通透与自由》

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值