Как связать -lpthread -lm -ldl в CMake

Я пытаюсь использовать cmake, чтобы связать Intel mkl с моим кодом. Из советника по ссылкам mkl я должен связать библиотеку следующим образом:

 -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl

Затем я пишу модуль для поиска mkl_intel_lp64, mkl_core и mkl_sequential в Findmkl.cmake:

find_library(lp64_libraries NAMES mkl_intel_lp64 PATHS "${mkl_path}/lib/intel64")
find_library(core_libraries NAMES mkl_core PATHS "${mkl_path}/lib/intel64")
find_library(sequential_libraries NAMES mkl_sequential PATHS "${mkl_path}/lib/intel64")

Тогда я могу связать эти библиотеки. Хотя я не знаю, как связать -lpthread -lm -ldl, я не уверен, что означает эта ссылка, я не могу найти libpthread.a в $ MKLROOT / lib / intel64.


person Hao Shi    schedule 21.07.2016    source источник


Ответы (1)


Эти библиотеки должны существовать в каждой системе Unix.

Так что вы можете просто добавить:

target_link_libraries(target_name m dl pthread)
person David Marquant    schedule 21.07.2016
comment
Большое спасибо, Дэвид. Пробовал, работает. Пока мне на практике нужно чуть больше. В моем коде много библиотек, я использую set(lib_all ${mkl_libraries} ${lib_all}) для добавления mkl, использую set(lib_all ${gmp_libraries} ${lib_all}) для связывания gmp, после связывания многих библиотек, затем использую: target_link_libraries (target_name $ {lib_all}). Я предпочитаю помещать m dl pthread в mkl_libraries вместо target_link_libraries (target_name $ {lib_all} m dl pthread). Есть ли способ добавить m dl pthread в mkl_libraries? - person Hao Shi; 21.07.2016