在yocto

时间:2018-04-16 05:40:59

标签: cmake cross-compiling yocto

我有一些库/应用程序(由第三方供应商提供,因此更改它们并非真正的选项)以非标准方式构建。基本上,有些库以奇怪的方式链接到其他库。

这就是我所说的:

.
├── libA
│   ├── include
│   │   └── headerA.h
│   └── src
└── libB
    ├── include
    │   └── headerB.h
    └── src

libA使用libB语法包含""标头,即传递#include "headerB.h "-I编译选项以包含libB/include/目录。但是,链接到libA会产生问题,因为我还需要包含libB包含目录。

这不是一个大问题,因为标头已安装到目标sysroot中。假设libB标题已安装到${SYSROOT}/usr/include/libB中。

现在,出于某种原因,使用${CMAKE_C_FLAGS}而不是${CMAKE_SYSROOT}传递sysroot目录。我尝试解析${CMAKE_C_FLAGS}以获得这样的sysroot:

execute_process(COMMAND "echo \"${CMAKE_C_FLAGS}\""
        COMMAND "grep -Eo '\\-\\-sysroot=\\S*'"
        COMMAND "sed 's:--sysroot=::g'"
        OUTPUT_VARIABLE SYSROOT
        RESULT_VARIABLE SYSROOT_RESULT
)

但是,"No such file or directory"总是失败。我认为它没有一个命令,即echogrepsed。我该如何解决?或者可能有一个更好的方式?

0 个答案:

没有答案