CMake如何处理Windows下的动态链接库依赖?
时间: 2024-09-18 21:14:26 浏览: 14
在CMake中,处理Windows下的动态链接库依赖主要涉及到`find_library`和`target_link_libraries`这两个函数。下面是基本步骤:
1. **查找库**:
使用`find_library`函数找到所需的动态库。例如,如果需要找Qt5的Widgets库:
```cmake
find_package(Qt5Widgets REQUIRED)
```
`REQUIRED`选项表示找不到库时会触发错误。
2. **存储库信息**:
找到库后,CMake会将相关信息存储在`Qt5Widgets_LIBRARIES`等变量中,这些变量包含了库的路径和名称。
3. **链接目标**:
通过`target_link_libraries`将库链接到你的目标(如可执行文件或库),例如:
```cmake
target_link_libraries(MyApp ${Qt5Widgets_LIBRARIES})
```
这里`${Qt5Widgets_LIBRARIES}`会被替换为实际的库列表。
4. **配置生成器**:
如之前提到,针对Windows x64,你需要明确指定生成器(如`Visual Studio 15 2017 Win64`)以便生成正确的库依赖项。
5. **生成解决方案**:
使用`cmake --build . --config Release`或`--debug`命令生成包含静态库链接或导入库(.lib和.lib或.dll和.exp)的解决方案。
在MSVC环境下,CMake还会自动生成对应的import library (.lib)用于静态链接。