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)