C++ CMake无法生成安全链接器搜索路径-yocto 2.4

C++ CMake无法生成安全链接器搜索路径-yocto 2.4,c++,gcc,cmake,linker,yocto,C++,Gcc,Cmake,Linker,Yocto,我有两个yocto软件包,可以在yocto 2.0.2上使用gcc 5.4、cmake 3.6.1成功编译,但我在yocto 2.4上面临以下问题:gcc 6.3、cmake 3.6.1 经过一些研究,我发现yocto改变了sysroot结构(每个包的sysroot,而不是一个普通的sysroot)。 错误如下所示: CMake Warning at src/mytest/CMakeLists.txt:71 (add_executable): Cannot generate a safe l

我有两个yocto软件包,可以在yocto 2.0.2上使用gcc 5.4、cmake 3.6.1成功编译,但我在yocto 2.4上面临以下问题:gcc 6.3、cmake 3.6.1

经过一些研究,我发现yocto改变了sysroot结构(每个包的sysroot,而不是一个普通的sysroot)。 错误如下所示:

CMake Warning at src/mytest/CMakeLists.txt:71 (add_executable):
  Cannot generate a safe linker search path for target mytest because
  files in some directories may conflict with libraries in implicit
  directories:

link library [libpthread.so] in /local/build2/tmp/work/corei7-64-poky-linux/mytest/recipe-sysroot/usr/lib may be hidden by files in:
  /local/build2/tmp/work/corei7-64-poky-linux/mylib/recipe-sysroot/usr/lib


  Some of these libraries may not be found correctly.
导致链接错误:
ld:找不到/lib/libpthread.so.0

我在一些cmake生成的文件中观察到,mylib包使用硬编码的pkg名称导出其库,稍后将由测试pkg使用:

set_target_properties(mylib PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "/usr/include/;/{_IMPORT_PREFIX}/include"
  INTERFACE_LINK_LIBRARIES "-lpthread; mylib; /local/build2/tmp/work/corei7-64-poky-linux/mylib/recipe-sysroot/usr/lib/libpthread.so;"
)

有没有办法避免这种重复?或者从cmake生成的文件中删除完整路径

您能否显示mylib的
target\u link\u libraries()
命令?为什么两次提到
pthread
(一次使用相对路径,一次使用绝对路径)?请注意,从2.4 Yocto版本开始,共享tmp/sysroot不再存在