Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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
cmake:递归收集所有链接的共享库_Cmake - Fatal编程技术网

cmake:递归收集所有链接的共享库

cmake:递归收集所有链接的共享库,cmake,Cmake,是否可以在cmake中编写一个函数,递归收集所有链接库(共享类型) 这是一个只涉及一个级别的函数,它将*-NOTFOUND实体添加到列表中,我希望避免这样做 get_target_property(libs App LINK_LIBRARIES) set(list_libs ${libs}) foreach(lib ${libs}) get_target_property(ls ${lib} LINK_LIBRARIES) list(APPEND list_libs ${ls})

是否可以在cmake中编写一个函数,递归收集所有链接库(共享类型)

这是一个只涉及一个级别的函数,它将
*-NOTFOUND
实体添加到列表中,我希望避免这样做

get_target_property(libs App LINK_LIBRARIES)
set(list_libs ${libs})
foreach(lib ${libs})
    get_target_property(ls ${lib} LINK_LIBRARIES)
    list(APPEND list_libs ${ls})
endforeach()

message(STATUS "Linked libraries: ${list_libs}")
如果可能的话,这将使部署变得相当简单。因为我们将有一个需要复制到可执行文件或依赖库文件夹中的DLL的最终列表

foreach(lib ${list_libs})
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${lib}> $<TARGET_FILE_DIR:App>
endforeach()
foreach(lib${list_libs})
命令${CMAKE_COMMAND}-E copy_如果不同$$
endforeach()

在Bazel.build中非常简单。:-)请参阅@sakra
请注意,此子命令不适用于项目模式。
如果我只想构建一个目标并将其依赖项复制到其文件夹中,我怀疑此命令是否有帮助。如果我理解正确,这将与install命令一起使用。