在名称空间中安装目标

时间:2019-12-02 15:39:06

标签: c++ cmake

如何使用cmake在目标名称空间中安装目标?

我具有以下设置,并希望导出foo :: core和foo :: bar以便在其他项目中使用:

project(foo)

add_library(core)
add_library(foo::core ALIAS core)

add_library(bar)
add_library(foo::bar ALIAS core)

install(TARGETS core bar EXPORT fooConfig)
install(EXPORT fooConfig NAMESPACE foo)
export(TARGETS core bar FILES fooConfig.cmake)

我可以使用find_package查找我的foo libaray,并且可以链接我的核心库和bar库,但是它们不位于foo名称空间中

project(different_project)
find_package(foo REQUIRED)

add_executable(example)
target_link_libraries(example PRIVATE core bar) # this is possible
target_link_libraries(example PRIVATE foo::core foo::bar) # this is what i want, but not possible

1 个答案:

答案 0 :(得分:2)

NAMESPACEinstall(EXPORT)命令都支持选项export()

因此,要在安装树中添加名称空间,请使用

install(TARGETS core bar EXPORT fooConfig)
install(EXPORT fooConfig NAMESPACE foo)

,并在构建树中使用

export(TARGETS core bar NAMESPACE foo FILE fooConfig.cmake)