Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependencies 具有依赖项的共享库的安装导出问题_Dependencies_Export_Cmake - Fatal编程技术网

Dependencies 具有依赖项的共享库的安装导出问题

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警告我安装(导出…时出现错

我尝试从一个项目中构建两个库(比如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警告我安装(导出…时出现错误。它会打印:

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仍要求静态库转到相同的导出。有关更多信息,请参阅此处: