我们目前正在使用单个命令行工具在 Windows 和 Linux 上构建我们的产品。
到目前为止,它工作得很好,允许我们从源代码构建,并且具有比我们之前的任何构建系统所允许的更精细的依赖关系。这为我们带来了强大的增量和并行构建能力。
为了简要描述构建过程,我们得到通常的:
.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 这样的工具如何解决这个问题?
我已经很长时间没有接触过C++了,但是从这个开始article http://blogs.msdn.com/b/vcblog/archive/2014/03/05/shrink-my-program-database-pdb-file.aspx,这似乎是一个性能技巧,旨在停止重新创建公共标头的符号。
您可以尝试 /Z7 在每个 obj 中嵌入信息,而不是创建 PDB,然后使用 rebase 链接并重新创建它,如下所示article http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)