安装具有依赖项的共享库的EXPORT问题

时间:2011-03-21 13:51:16

标签: dependencies export cmake

我尝试从一个项目构建两个库(例如 A B )。我在root cmake文件中使用add_subdirectory cmake命令。 B 取决于 A

当我尝试添加

INSTALL (TARGETS B EXPORT B
    PUBLIC_HEADER DESTINATION "include/B"
    LIBRARY DESTINATION "lib"
    ARCHIVE DESTINATION "lib")

INSTALL (EXPORT B DESTINATION "./")

CMake警告我与INSTALL (EXPORT ...一致的错误。它打印:

  

CMake错误:INSTALL(EXPORT“B”...)包括目标“B”,它要求目标“A”不在导出集中。

1 个答案:

答案 0 :(得分:4)

错误消息已告诉您只导出一个项目,而它依赖于另一个项目。最简单的解决方案是导出两个项目。如果它们都由相同的CMakeLists.txt构建,则只需调用

即可
install( TARGETS A B ... )

如果没有,那么你可能有一个顶级的CMakeLists.txt(你使用add_subdirectory)。您可以在那里设置安装目标,我们称之为“MyInstall”。在您的子目录中,请参阅此顶级安装目标

在您的子目录中......

install( TARGETS A EXPORT MyInstall ... )

类似于目标B,然后导出“MyInstall”你的顶级CMakeLists.txt:

install( EXPORT MyInstall ... )