如何使用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
最佳答案
NAMESPACE
和install(EXPORT)
命令都支持选项export()
。
因此,要在安装树中添加名称空间,请使用
install(TARGETS core bar EXPORT fooConfig)
install(EXPORT fooConfig NAMESPACE foo)
并在构建树中使用
export(TARGETS core bar NAMESPACE foo FILE fooConfig.cmake)
关于c++ - 在 namespace 中安装目标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59142232/