cmake 笔记 关于 private,interface,public

target_include_directories(hello_library
    PUBLIC
        ${PROJECT_SOURCE_DIR}/include
)

target_link_libraries( hello_binary
    PRIVATE
        hello_library
)

PRIVATE - 被添加到目标(库)的包含路径中。
INTERFACE - 没有被添加到目标(库)的包含路径中,而是添加到了链接这个库的其他目标(库或者可执行程序)包含路径中
PUBLIC - 既被添加到目标(库)的包含路径中,同时添加到了链接这个库的其他目标(库或者可执行程序)的包含路径中

简单来说,不考虑文件大小,重复引用,全部用PUBLIC就完事了。

add_library命令如果没有可添加的执行文件,只能用INTERFACE来修饰

add_library(${PROJECT_NAME} INTERFACE)
posted on 2021-07-14 02:23  只争朝夕,不负韶华!  阅读(1911)  评论(1)    收藏  举报