如何用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
我要安装所有依赖库
我这样做
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