function(append_include_directories target)
set(dir_list)
foreach(obj ${ARGN})
if(${obj} STREQUAL "PUBLIC" OR
${obj} STREQUAL "public" OR
${obj} STREQUAL "PRIVATE" OR
${obj} STREQUAL "private" OR
set(dir_list ${dir_list} ${obj}) # 保存Cmake关键字
else()
set(dir_list ${dir_list} "$<TARGET_PROPERTY:$(obj),INCLUDE_DIRECTORIES>") #只取target的public或interface属性的头文件路径
#INCLUDE_INTERFACE_DIRECTORIES
endif()
endforeach()
target_include_directories(target ${dir_list})
endfunction()
使用函数append_include_directories 去添加依赖target的头文件路径。
由于没有target间的依赖,可以实现单个target下的源码编译。
注意:
由于依赖被移除,在链接时需要罗列所有的target。