如何构建 crashpad 的动态(共享)库?
How to build dynamic (shared) libraries of crashpad?
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
生成共享库的方法。
生成 ninja 文件后,为每个 ninja 文件找到开关 /MTd(调试)或 /MT(发布版本)并将其更改为 /MDd 或 /MD,以便创建动态库
然后你可以用 ninja 构建 crashpad,输出仍然是 lib 文件,所以当你 link 它们到你的项目时它们将包含在 exe 文件中(你不必将它们添加到你的项目中使用 dll)。
在 运行 gn gen out\Default
之后,您可以编辑 out\Default\toolchain.ninja
文件,为 cc
和 cxx
规则的命令添加额外的编译器标志。
rule cc
command = ninja -t msvc -e environment.amd64 -- cl.exe ... ${cflags} ${cflags_c} /c ...
add the /MD compiler flag after the others, here ^
我们今天又看了一遍。如果您 运行 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"
添加到构建配置。
@bobbyg603 的回答几乎 我需要的。
但通常事情不是手写的,而是嵌入在脚本中,因此打开编辑器来更改内容通常根本没有用。以编程方式,您还可以使用:
gn gen out\Default --args="extra_cflags=\"/MD\""
这也会顺便更改 cxx 的参数。
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
生成共享库的方法。
生成 ninja 文件后,为每个 ninja 文件找到开关 /MTd(调试)或 /MT(发布版本)并将其更改为 /MDd 或 /MD,以便创建动态库
然后你可以用 ninja 构建 crashpad,输出仍然是 lib 文件,所以当你 link 它们到你的项目时它们将包含在 exe 文件中(你不必将它们添加到你的项目中使用 dll)。
在 运行 gn gen out\Default
之后,您可以编辑 out\Default\toolchain.ninja
文件,为 cc
和 cxx
规则的命令添加额外的编译器标志。
rule cc
command = ninja -t msvc -e environment.amd64 -- cl.exe ... ${cflags} ${cflags_c} /c ...
add the /MD compiler flag after the others, here ^
我们今天又看了一遍。如果您 运行 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"
添加到构建配置。
@bobbyg603 的回答几乎 我需要的。
但通常事情不是手写的,而是嵌入在脚本中,因此打开编辑器来更改内容通常根本没有用。以编程方式,您还可以使用:
gn gen out\Default --args="extra_cflags=\"/MD\""
这也会顺便更改 cxx 的参数。