Dependencies 具有依赖项的共享库的安装导出问题
我尝试从一个项目中构建两个库(比如A和B)。我在根cmake文件中使用Dependencies 具有依赖项的共享库的安装导出问题,dependencies,export,cmake,Dependencies,Export,Cmake,我尝试从一个项目中构建两个库(比如A和B)。我在根cmake文件中使用add_子目录cmake命令。B取决于A 当我尝试添加 INSTALL (TARGETS B EXPORT B PUBLIC_HEADER DESTINATION "include/B" LIBRARY DESTINATION "lib" ARCHIVE DESTINATION "lib") INSTALL (EXPORT B DESTINATION "./") CMake警告我安装(导出…时出现错
add_子目录
cmake命令。B取决于A
当我尝试添加
INSTALL (TARGETS B EXPORT B
PUBLIC_HEADER DESTINATION "include/B"
LIBRARY DESTINATION "lib"
ARCHIVE DESTINATION "lib")
INSTALL (EXPORT B DESTINATION "./")
CMake警告我安装(导出…时出现错误。它会打印:
CMake错误:安装(导出“B”…)包括目标“B”,它需要不在导出集中的目标“A”
错误消息已经告诉您,您只导出一个项目,而它取决于另一个项目。最简单的解决方案是导出两个项目。如果它们都是由同一个CMakeLists.txt生成的,您只需调用
install( TARGETS A B ... )
如果没有,那么您可能有一个顶级的CMakeLists.txt(在这里您使用add_子目录)。您可以在那里设置一个安装目标,我们称之为“MyInstall”。在您的子目录中,指的是这个顶级安装目标
在你的分区
install( TARGETS A EXPORT MyInstall ... )
与目标B类似,然后导出顶级CMakeLists.txt的“MyInstall”:
install( EXPORT MyInstall ... )
如果要安装的共享库依赖于将成为共享库一部分的静态库,该怎么办?在这种情况下,我不需要安装静态库,但CMake仍要求静态库转到相同的导出。有关更多信息,请参阅此处: