#Cmake#__target_link_libraries函数的使用说明

#Cmake#__target_link_libraries函数的使用说明

    • 参数声明
    • 常用方式
    • 作用域说明

参数声明

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

target_link_libraries( 
                       ... 
                      [ ...]...)
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);

你可能感兴趣的:(编译工具,cmake)