Build 如何";安装";(复制)使用CMake的传递链接库的头文件

Build 如何";安装";(复制)使用CMake的传递链接库的头文件,build,cmake,header-files,Build,Cmake,Header Files,我有3个图书馆:A、B、C C链接与B链接与A链接(C也将“链接”与B链接) 这些库中的每一个都设置了一个PUBLIC_HEADER属性,该属性包含各自头文件的路径。例如: set_target_properties(A PROPERTIES PUBLIC_HEADER "A.h") set_target_properties(B PROPERTIES PUBLIC_HEADER "B.h") set_target_properties(C PROPERTIES PUBLIC_HEADER "C

我有3个图书馆:A、B、C

C链接与B链接与A链接(C也将“链接”与B链接)

这些库中的每一个都设置了一个PUBLIC_HEADER属性,该属性包含各自头文件的路径。例如:

set_target_properties(A PROPERTIES PUBLIC_HEADER "A.h")
set_target_properties(B PROPERTIES PUBLIC_HEADER "B.h")
set_target_properties(C PROPERTIES PUBLIC_HEADER "C.h")
当我在“build”目录下编译并安装库C(使用make&&make install)时,我希望输出库文件和all链接的头文件都在那里

为此,我使用了以下指令:

install(TARGETS C
        RUNTIME DESTINATION       build
        LIBRARY DESTINATION       build
        ARCHIVE DESTINATION       build
        PUBLIC_HEADER DESTINATION build)
但是,只有C.h文件(和库)被复制到构建目录中


库C如何继承A/B链接库的公共头?

A.h
A
库的公共头。因此,它安装了
A
目标。否则,如果不安装
A
,我认为安装
A.h
@Tsyvarev是没有必要的。我理解它为什么会这样工作。我在问是否有一种方法可以“继承”链接库的PUBLIC_头(类似于target_include_目录),我不知道如何将PUBLIC_头属性从原始目标自动传播到链接到的目标。您能否描述一下,为什么需要安装目标的PUBLIC_头而不安装该目标?对我来说似乎是个问题。。
install(TARGETS C
        RUNTIME DESTINATION       build
        LIBRARY DESTINATION       build
        ARCHIVE DESTINATION       build
        PUBLIC_HEADER DESTINATION build)