3

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

4 回答 4

2

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

rule cc
  command = ninja -t msvc -e environment.amd64 -- cl.exe ... ${cflags} ${cflags_c} /c ...
                                 add the /MD compiler flag after the others, here ^
于 2019-08-16T15:44:47.893 回答
2

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

但像往常一样,东西不是手工编写的,而是嵌入到脚本中的,所以打开编辑器来改变东西通常根本没有用处。以编程方式,您还可以使用:

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

顺便说一下,这也会改变 cxx 的参数。

于 2020-11-10T12:21:49.837 回答
1

我们今天再看一遍。如果您运行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标志添加到您的构建配置运行gn args out\Default并添加extra_cflags="/MDd"到构建配置。

于 2020-08-07T16:20:32.360 回答
1

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

然后您可以使用 ninja 构建 crashpad,输出仍然是 lib 文件,因此当您将它们链接到项目时它们将包含在 exe 文件中(您不必像使用 dll 一样将它们添加到项目中)。

于 2019-05-15T07:42:43.937 回答