在CMake项目中处理隐式链接的实际方法是什么?
在Windows中,.dll
在运行时链接,因此CMake只需要在编译期间链接.lib
文件。使用find_package
可以做得更好。但是,在编译期间,CMake永远不会将对应于链接的.dll
文件的.lib
复制到链接的可执行文件的输出路径。
这是CMake留给用户的东西吗?
对于您链接的每个库,必须手动查找dll
并将其手动复制到输出目录或编写个人,这似乎有点混乱,更不用说非跨平台了。 CMake命令,如下所示,按照您找到的包/库链接执行此操作。
add_custom_command(
TARGET MyTarget POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${PROJECT_SOURCE_DIR}/libs/SDL2.dll"
$<TARGET_FILE_DIR:MyTarget>
)