如何使用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
答案 0 :(得分:2)
NAMESPACE
和install(EXPORT)
命令都支持选项export()
。
因此,要在安装树中添加名称空间,请使用
install(TARGETS core bar EXPORT fooConfig)
install(EXPORT fooConfig NAMESPACE foo)
,并在构建树中使用
export(TARGETS core bar NAMESPACE foo FILE fooConfig.cmake)