为什么pkg_search_module不对导入的目标设置INTERFACE_LINK_LIBRARIES?

时间:2019-04-23 19:08:26

标签: cmake pkg-config

当我将pkg_search_moduleIMPORTED_TARGET一起使用时,XXX_LIBRARIES和所有其他全局属性都已设置,但是导入的目标有空的INTERFACE_LINK_LIBRARIES

我在Ubuntu 18.04.2和MKL 2018.2。上具有CMake 3.10.2。

最小的例子是这样:

cmake_minimum_required(VERSION 3.8)
project(test)

find_package(PkgConfig)
pkg_search_module(MKL IMPORTED_TARGET mkl-dynamic-lp64-iomp mkl-dynamic-lp64-seq)
get_property(v TARGET PkgConfig::MKL PROPERTY INTERFACE_LINK_LIBRARIES)
message("target property ${v}")
message("global property ${MKL_LIBRARIES}")

我希望看到目标属性和全局属性相等,但是我明白了

target property 
global property mkl_intel_lp64;mkl_intel_thread;mkl_core;iomp5;pthread;m;dl

当我尝试将导入的目标添加到某些可执行文件的target_link_target时,库未链接,并且出现链接器错误。我是在做错什么,还是有一些解决方法的已知错误?

已添加

$ pkg-config --libs-only-l mkl-dynamic-lp64-iomp
-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl
$ pkg-config --libs mkl-dynamic-lp64-iomp
-L/opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/lib/intel64_lin -L/opt/intel/compilers_and_libraries_2018.2.199/linux/mkl/../compiler/lib/intel64_lin -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl

0 个答案:

没有答案