Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CMake中链接in-lpthread-lm-ldl_Cmake_Intel Mkl - Fatal编程技术网

如何在CMake中链接in-lpthread-lm-ldl

如何在CMake中链接in-lpthread-lm-ldl,cmake,intel-mkl,Cmake,Intel Mkl,我正在尝试使用cmake为我的代码链接英特尔mkl。从mkl link advisor,我应该通过以下方式链接库: -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl 然后,我编写一个模块,在Findmkl.cmake中查找mkl\u intel\u lp64、mkl\u core和mkl\u sequential: find_library(lp64_librari

我正在尝试使用cmake为我的代码链接英特尔mkl。从mkl link advisor,我应该通过以下方式链接库:

 -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_sequential -lpthread -lm -ldl
然后,我编写一个模块,在Findmkl.cmake中查找
mkl\u intel\u lp64
mkl\u core
mkl\u sequential

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
,但我不确定此链接的含义,我在$MKLROOT/lib/intel64中找不到任何libpthread.a

这些库应该存在于每个Unix系统上

因此,您可以添加:

target_link_libraries(target_name m dl pthread)

非常感谢,大卫。我试过这个,效果很好。而我需要更多的练习。我的代码有很多库,我使用
set(lib_all${mkl_libraries}${lib_all})
添加mkl,使用
set(lib_all${gmp_libraries}${lib_all})
链接gmp,在链接许多库之后,然后使用:target_link_库(target_name${lib_all})。我更喜欢将
mdl pthread
放在mkl_库中,而不是放在target_link_库中(target_name${lib_all}mdl pthread)。有没有办法将
mdl pthread
添加到mkl_库中?