#Cmake#__target_link_libraries函数的使用说明

参数声明

target_link_libraries:为target链接到对应的库。

target_link_libraries(<target> 
                      <PRIVATE|PUBLIC|INTERFACE> <item>... 
                      [<PRIVATE|PUBLIC|INTERFACE> <item>...]...)
target_link_libraries(target target1 target2)
target_link_libraries(target3 target target4)

PUBLI:表示target能够使用target1&target2库中的内容,target3 能够使用target1 & target2中定义的内容;默认状态为PUBLIC;
PRIVATE:表示target能够使用target1&target2库中的内容,target3不能使用target1&target2中定义的内容,只能使用target中定义的内容;
INTERFACE:表示target无法使用target1&target2的内容,但是target3 能够使用target1 & target2;

常用方式

  1. 经常的使用方式是target_link_libraries(target Third_part_lib),Third_part_lib参数,每个第三库会进行定义,具体的名称可以找到库的说明文档进行查看。
target_link_libraries(target ${OpenCV_LIBS})

作用域说明

target1:
#include “opencv” 
cv::imwait(0);

target2: 
#include “opencv” 
cv::imwait(0); 
cv::imwrite();

target4: 
#include “opencv” 
cv::imwait(0); 
cv::imwrite();

target_link_libraries(target1 OpenCV)
target_link_libraries(target target1 target2)
target_link_libraries(target3 target target4)

target2和target4能使用imwait(0),但是不能使用imwrite(),除非在target2和target4的CMakeLists中添加target_link_libraries(target2/4 OpenCV);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐