我们目前使用单个命令行工具在 Windows 和 Linux 上构建我们的产品。
Si 到目前为止它工作得很好,允许我们从源代码构建并且具有比我们以前的任何构建系统所允许的更精细的依赖关系。这为我们带来了强大的增量和并行构建能力。
为了简要描述构建过程,我们得到通常的:
.cpp -- cl.exe --> .obj and .pdb
multiple .obj and .pdb -- cl.exe --> single .dll .lib .pdb
multiple .obj and .pdb -- cl.exe --> single .exe .pdb
msvc C/C++ 编译器充分支持它。
最近出现了构建一些静态库的需求。根据我们收集到的信息,构建静态库的过程是:
multiple .cpp -- cl.exe --> multiple .obj and a single .pdb
multiple .obj -- lib.exe --> a single .lib
单个 .pdb 意味着cl.exe
只应对所有 .cpp 源执行一次。这个单一的执行意味着我们不能并行化这个静态库的构建。这真的很不幸。
我们根据文档(以及可用的命令行选项)进行了进一步调查:
cl.exe
不知道如何构建静态库lib.exe
不知道如何构建 .pdb 文件
有人知道合并多个 PDB 文件的方法吗?我们注定要缓慢构建静态库吗?Incredibuild 等工具如何解决此问题?