如何用CMake安装依赖库?

How to install dependent libraries with CMake?

我要安装所有依赖库

我这样做

install(FILES "path/external.dll" DESTINATION lib)

但是,我已经用 target_link_libraries:

配置了路径(和库)
target_link_libraries(${PROJECT_NAME} PUBLIC "path/external.dll")

所以,我想我可能不需要再告诉 install FILES

我可以用 install TARGETS 做到这一点,不是吗?

然而,

install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib)

没有安装依赖库。

我怎么能不重复呢?

CMake 3.21 为此向 install(TARGETS) 添加了一个参数:RUNTIME_DEPENDENCIES。试试这个:

include(GNUInstallDirs)
install(
    TARGETS my_target
    RUNTIME_DEPENDENCIES
        [DIRECTORIES ...]
)

其中 DIRECTORIES 标记可选搜索路径列表的开始。另请注意,包括 GNUInstallDirs 会正确设置默认目标。

查看文档:https://cmake.org/cmake/help/latest/command/install.html#targets