Build 如何";安装";(复制)使用CMake的传递链接库的头文件
我有3个图书馆:A、B、C C链接与B链接与A链接(C也将“链接”与B链接) 这些库中的每一个都设置了一个PUBLIC_HEADER属性,该属性包含各自头文件的路径。例如: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
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)