【发布时间】:2021-04-30 15:28:59
【问题描述】:
当使用 MSVC 编译多个库时,编译过程可以针对每个库并行执行。
另一方面,如果我有一个将几个静态库链接在一起的 dll,则 dll 编译过程必须等到所有库完成编译。至少在我目前使用的工作流程中。
我知道使用 MSVC 指定这种类型的链接依赖的 2 个可能选项:
- 将库添加为 dll 项目中的引用。
- 通过 Poperty Pages -> Input -> Additional Dependencies 或
#pragma comment(lib, "mylib.lib")等 pragma 语句手动链接库。
使用选项 1 时,Visual C++ 会等到所有库都编译完成后,才会启动 dll 编译。在我看来,这是一种浪费,因为这些只是链接时间依赖性。
使用第二个选项时,我不确定 Visual C++ 是否会等到依赖项编译完成后再尝试链接它们。
那么是否可以将静态库依赖项指定为仅链接时依赖项并将静态库和依赖的 dll 编译交错?
【问题讨论】:
-
MSBuild 没有正确地整理出工件的依赖关系,什么可以并行构建(即不相互依赖)?您可以尝试使用 CMake bilds 设置忍者选项。
标签: c++ visual-studio visual-c++ compilation linker