2011-03-21 52 views
3

我尝试从一个项目构建两个库(称为A和B)。我在root cmake文件中使用add_subdirectory cmake命令。图书馆B依赖于库A.为依赖关系的共享库安装EXPORT问题

当我尝试添加
install( TARGETS B EXPORT B PUBLIC_HEADER DESTINATION "include/B" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib" )
install(EXPORT B DESTINATION "./") cmake的警告我有关使用install(EXPORT...错误线。
它打印
CMake Error: INSTALL(EXPORT "B" ...) includes target "B" which requires target "A" that is not in the export set.

回答

4

错误消息已经告诉你,你的出口只有一个项目,而这取决于其他项目。最简单的解决方案是导出这两个项目。如果它们都建立在同一的CMakeLists.txt,你可以简单地调用

install(TARGETS A B ...) 

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

在你的子目录...

install(TARGETS A EXPORT MyInstall ...) 

为靶B类似,然后导出“MyInstall”顶层的CMakeLists.txt:

install(EXPORT MyInstall ...) 
+0

非常感谢!有用! – 2011-03-21 14:54:38