Crashpad 是 C++ 应用程序的错误报告系统。 https://chromium.googlesource.com/crashpad/crashpad/+/HEAD/doc/developing.md
构建指令是
$ cd ~/crashpad/crashpad
$ gn gen out/Default
$ ninja -C out/Default
我可以构建预定义的静态库,但我还没有找到如何使用gn
或ninja
生成共享库的方法。
Crashpad 是 C++ 应用程序的错误报告系统。 https://chromium.googlesource.com/crashpad/crashpad/+/HEAD/doc/developing.md
构建指令是
$ cd ~/crashpad/crashpad
$ gn gen out/Default
$ ninja -C out/Default
我可以构建预定义的静态库,但我还没有找到如何使用gn
或ninja
生成共享库的方法。
运行后gn gen out\Default
,您可以编辑该out\Default\toolchain.ninja
文件以将额外的编译器标志添加到cc
andcxx
规则的命令中。
rule cc
command = ninja -t msvc -e environment.amd64 -- cl.exe ... ${cflags} ${cflags_c} /c ...
add the /MD compiler flag after the others, here ^
@bobbyg603 的回答几乎是我所需要的。
但像往常一样,东西不是手工编写的,而是嵌入到脚本中的,所以打开编辑器来改变东西通常根本没有用处。以编程方式,您还可以使用:
gn gen out\Default --args="extra_cflags=\"/MD\""
顺便说一下,这也会改变 cxx 的参数。
我们今天再看一遍。如果您运行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"
到构建配置。
生成忍者文件后,为每个忍者文件找到开关 /MTd(调试)或 /MT(发布版本)并将其更改为 /MDd 或 /MD 以便创建动态库
然后您可以使用 ninja 构建 crashpad,输出仍然是 lib 文件,因此当您将它们链接到项目时它们将包含在 exe 文件中(您不必像使用 dll 一样将它们添加到项目中)。