Как построить динамические (общие) библиотеки 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
генерировать общие библиотеки.
1 ответ
После того, как вы сгенерируете файлы ниндзя, для каждого файла ниндзя найдите переключатель /MTd (отладка) или /MT (версия выпуска) и измените его на /MDd или / MD, чтобы создавались динамические библиотеки
затем вы можете создать crashpad с помощью ninja, на выходе по-прежнему будут файлы lib, поэтому они будут включены в 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 ^
Ответ @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"
в конфигурацию сборки.