Почему pkg_search_module не устанавливает INTERFACE_LINK_LIBRARIES для импортируемой цели? - PullRequest
0 голосов
/ 23 апреля 2019

Когда я использую pkg_search_module с IMPORTED_TARGET, XXX_LIBRARIES и все другие глобальные свойства установлены, но импортированная цель имеет пустое значение INTERFACE_LINK_LIBRARIES.

У меня CMake 3.10.2 в Ubuntu 18.04.2 и MKL 2018.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
...