我尝试从一个项目构建两个库(例如 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”不在导出集中。
答案 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 ... )