如何建立动态(共用)的rashpad库?

时间:2019-03-22 15:05:46

标签: crash chromium ninja gn depottools

Crashpad是c ++应用程序的错误报告系统。 https://chromium.googlesource.com/crashpad/crashpad/+/HEAD/doc/developing.md

构建说明是

 $ cd ~/crashpad/crashpad
 $ gn gen out/Default
 $ ninja -C out/Default

我可以构建预定义的静态库,但是我还没有找到一种方法来使用gnninja来生成共享库。

4 个答案:

答案 0 :(得分:2)

@ bobbyg603的答案几乎是我所需要的。

但是,通常情况下,不是用手写的东西而是将其嵌入脚本中的,所以打开编辑器进行更改通常根本没有用。通过编程,您还可以使用:

gn gen out\Default --args="extra_cflags=\"/MD\""

这还将顺便更改cxx的参数。

答案 1 :(得分:1)

运行gn gen out\Default之后,您可以编辑out\Default\toolchain.ninja文件,为cccxx规则的命令添加额外的编译器标志。

rule cc
  command = ninja -t msvc -e environment.amd64 -- cl.exe ... ${cflags} ${cflags_c} /c ...
                                 add the /MD compiler flag after the others, here ^

答案 2 :(得分:1)

我们今天又对此进行了研究。如果您运行mobile,则会注意到以下内容:

profile.html

要将gn args --list out\Default标志添加到构建配置中,请运行extra_cflags Current value (from the default) = "" From //third_party/mini_chromium/mini_chromium/build/BUILD.gn:50 Extra flags passed to the C compiler. Space-separated string of flags. "cflags" are passed to all invocations of the C, C++, Objective-C, and Objective-C++ compilers. 并将/MDd添加到构建配置中。

答案 3 :(得分:0)

生成忍者文件后,为每个忍者文件找到开关/ MTd(调试)或/ MT(发行版)并将其更改为/ MDd或/ MD,以便创建动态库

然后,您可以使用忍者构建崩溃面板,输出仍然是lib文件,因此当您将它们链接到项目时,它们将包含在exe文件中(您不必像使用dll一样将它们添加到您的项目中)。 / p>