当前位置:   article > 正文

CLion 交叉编译 “iostream is not found“ 无法解析标准库头文件问题的优雅解决方法_clion 'iostream' file not found

clion 'iostream' file not found

CLion 交叉编译 “iostream is not found” 无法解析标准库头文件问题的优雅解决方法

摘要

CLion本身对CMake有着强大的支持,这一切支持的背后,都依赖着符号的索引以及头文件的查找。对于交叉编译的开发情景,CLion的默认设置显然不能满足需求,一旦配置不到位,那么就会面临"iostream is not found","vector is not found"等标准C++头文件找不到的问题。本文介绍了如何优雅的解决此类问题的方法。
如果喜欢或有不足之处,欢迎评论。

应用情景

编辑环境:CLion for Windows
构建环境:用于构建IMX8Mmini开发板的Docker容器

在Windows桌面环境通过Clion强大的远程开发调试功能,连接到docker的编译环境下。

问题描述

在完成基本的CLion工具链配置之后,“Hello world”交叉编译通过

#include <iostream>
#include <map>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

标准库头文件iostream和map下有红色波浪线,并且无法进入头文件查看,提示iostream is not found

解决办法

在CMakeLists.txt中进行人如下定义

  • 定义CMAKE_SYSROOT变量,指向嵌入式系统根目录
  • 定义CMAKE_FIND_ROOT_PATH变量,并包含嵌入式系统根目录路径

添加完成后的CMakeLists.txt内容如下

# cmake_minimum_required(VERSION <specify CMake version here>)
cmake_minimum_required(VERSION 3.10)

set(SYSROOT_PATH  /opt/myir-imx-xwayland/4.14-sumo/sysroots/aarch64-poky-linux)
set(CMAKE_SYSROOT "${SYSROOT_PATH}")
set(CMAKE_FIND_ROOT_PATH "${SYSROOT_PATH}" "${CMAKE_PREFIX_PATH}" "${TOOLCHAIN_PATH}")

# search for programs in the build host directories
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

project(demo LANGUAGES "CXX" "C")

set(CMAKE_CXX_STANDARD 14)

add_executable(demo main.cpp)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

原理分析

要想CLion IDE可以正常解析,则符号所在的头文件目录要出现在工程窗口中->External Libraries->Header Search Paths中,如下图所示
在这里插入图片描述
而之前编译可以通过但是CLion无法解析,是因为之前只设置了CMAKE_SYSROOT变量,而未设置CMAKE_FIND_ROOT_PATH变量。

CMAKE_SYSROOT:作用于gnu工具链,添加--sysroot编译选项
CMAKE_FIND_ROOT_PATH变量,影响CLion头文件路径搜索,直至影响到IDE是否能正常解析符号。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/311694
推荐阅读
相关标签
  

闽ICP备14008679号