Страница 3 из 4
Re: Chromium инструментарий
Добавлено: 19 авг 2021, 11:22
Olej
Olej писал(а): ↑17 авг 2021, 17:39
Облом
ВСЁ из
документации, что касается ng, ninja и вообще всего Chromium инструментария -
отвратительно по качеству!
Документы и примеры написаны 2014 годом максимум, или ранее + написаны так, чтобы чуть ли не специально не соответствовать реальному состоянию дел: примеры не работают, инсталляции не устанавливаются (на все 100%, с ошибками) и т.д. и т.п.
Такое впечатление, что эта "документация" пишется с целью завлечь, заинтересовать (как альтернатива autoconf, make, Cmake и т.д.), но не дать реальной возможности использовать.
Из документации gn -
Examples:
There is a simple example in examples/simple_build directory that is a good place to get started with the minimal configuration.
И то как подробно это же описано в
Система сборки
... оно так просто не работает! Там нужно для самого простого примера ещё кучу конфигурационных файлов.
Сам их пример, как он есть,
gn / gn / HEAD / . / examples / simple_build скачал ... не без труда...
Re: Chromium инструментарий
Добавлено: 19 авг 2021, 11:59
Olej
Olej писал(а): ↑17 авг 2021, 17:47
И это, по крайней мере, отличается от того, что устанавливалось в составе Chromium:
Пока временно отвлекусь именно на сборку браузера Chromium ... та как это выглядит на сегодняшний день.
И продолжу это, раз уже есть (была!) такая тема, в
Chromium - сборка и модификация.
...
И вот в итоге
:
Re: Chromium инструментарий
Добавлено: 20 авг 2021, 12:44
Olej
Olej писал(а): ↑19 авг 2021, 11:59
Пока временно отвлекусь
Возвращаемся:
Olej писал(а): ↑19 авг 2021, 11:22
Сам их пример, как он есть, gn / gn / HEAD / . / examples / simple_build скачал ... не без труда...
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN$ du -hs examples
72K examples
olej@R420:~/2021/OWN_TEST.codes/GN$ tree examples
examples
└── simple_build
├── build
│ ├── BUILDCONFIG.gn
│ ├── BUILD.gn
│ └── toolchain
│ └── BUILD.gn
├── BUILD.gn
├── hello.cc
├── hello_shared.cc
├── hello_shared.h
├── hello_static.cc
├── hello_static.h
├── README.md
└── tutorial
├── README.md
└── tutorial.cc
4 directories, 12 files
Re: Chromium инструментарий
Добавлено: 20 авг 2021, 14:21
Olej
Olej писал(а): ↑20 авг 2021, 12:44
Возвращаемся:
Использую тот
бинарный экземпляр gn который скачан готовым из их сборки -
Getting a binary
You can download the latest version of GN binary for
Linux, macOS and Windows from Google's build infrastructure (see “Versioning and distribution” below for how this is expected to work).
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ../../out/gn gen -C out
Done. Made 3 targets from 4 files in 4ms
И теперь дерево примеров приняло вид:
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN$ tree examples
examples
└── simple_build
├── build
│ ├── BUILDCONFIG.gn
│ ├── BUILD.gn
│ └── toolchain
│ └── BUILD.gn
├── BUILD.gn
├── hello.cc
├── hello_shared.cc
├── hello_shared.h
├── hello_static.cc
├── hello_static.h
├── out
│ ├── args.gn
│ ├── build.ninja
│ ├── build.ninja.d
│ ├── obj
│ │ ├── hello.ninja
│ │ ├── hello_shared.ninja
│ │ └── hello_static.ninja
│ └── toolchain.ninja
├── README.md
└── tutorial
├── README.md
└── tutorial.cc
6 directories, 19 files
Видно, что сгенерированы скрипты в новый внутренний каталог out.
Re: Chromium инструментарий
Добавлено: 20 авг 2021, 14:24
Olej
Olej писал(а): ↑20 авг 2021, 14:21
Видно, что сгенерированы скрипты в новый внутренний каталог out.
И всё готово для сборки:
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ninja -C out
ninja: Entering directory `out'
[6/6] LINK hello
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ out/hello
Hello, world
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ls -l out
итого 56
-rw-rw-r-- 1 olej olej 53 авг 20 13:37 args.gn
-rw-rw-r-- 1 olej olej 577 авг 20 13:37 build.ninja
-rw-rw-r-- 1 olej olej 111 авг 20 13:37 build.ninja.d
-rwxrwxr-x 1 olej olej 16824 авг 20 14:21 hello
-rwxrwxr-x 1 olej olej 15760 авг 20 14:21 libhello_shared.so
drwx------ 2 olej olej 4096 авг 20 14:21 obj
-rw-rw-r-- 1 olej olej 1429 авг 20 13:37 toolchain.ninja
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ldd out/hello
linux-vdso.so.1 (0x00007ffe26730000)
libhello_shared.so => /home/olej/2021/OWN_TEST.codes/GN/examples/simple_build/out/libhello_shared.so (0x00007fb4f1417000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb4f120b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb4f1423000)
Собран исполнимый ELF файл и соответствующая ему shared библиотека .so
Re: Chromium инструментарий
Добавлено: 20 авг 2021, 14:56
Olej
Olej писал(а): ↑20 авг 2021, 14:21
Использую тот бинарный экземпляр gn который скачан готовым из их сборки - Getting a binary
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ls -l ../../out/gn
-rwxr-xr-x 1 olej olej 2355336 дек 31 1979 ../../out/gn
Но теперь использую тот,
другой экземпляр gn, который я собирал здесь в теме вручную
3 дня назад (вот отсюда
GN):
Olej писал(а): ↑17 авг 2021, 14:06
P.S. Вообще то, утверждается, что gn может устанавливаться автономно из Google-инструментария - gn / gn
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ls -l ~/gn/out/gn
-rwxrwxr-x 1 olej olej 2373568 авг 17 16:31 /home/olej/gn/out/gn
Как легко видеть (и по дате и по размеру) - это разные модификации gn (но это и не тот Python-скрипт gn, который используется в дереве Chromium).
Генерация используя этот
собранный релиз:
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ~/gn/out/gn gen -C out
Done. Made 3 targets from 4 files in 5ms
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ ninja -C out
ninja: Entering directory `out'
[2/2] LINK hello
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/GN/examples/simple_build$ out/hello
Hello, world
Re: Chromium инструментарий
Добавлено: 03 сен 2021, 16:25
Olej
Olej писал(а): ↑20 авг 2021, 14:56
Использую тот бинарный экземпляр gn который скачан готовым из их сборки - Getting a binary
Olej писал(а): ↑20 авг 2021, 14:56
P.S. Вообще то, утверждается, что gn может устанавливаться автономно из Google-инструментария - gn / gn
Olej писал(а): ↑20 авг 2021, 14:56
Но теперь использую тот, другой экземпляр gn, который я собирал здесь в теме вручную 3 дня назад (вот отсюда GN):
Довольно странная ситуация, когда присутствуют, как минимум, 3 совершенно разных реализации gn ("
Generate
Ninja") ... одна из которых в дереве исходных кодов Chromium - это вообще Python-серипт, который выполняя проверки дальше вызывает следующие процессы.
Из 2-х бинарных (ELF-формата) реализаций: 1 требует присутствия .git и
обязательной настроенной ссылки на
сетевой репозиторий GIT, с
обновления которого он вообще начинает работу...
Re: Chromium инструментарий
Добавлено: 06 сен 2021, 17:43
Olej
Olej писал(а): ↑03 сен 2021, 16:25
Довольно странная ситуация, когда присутствуют, как минимум, 3 совершенно разных реализации gn ("Generate Ninja") ... одна из которых в дереве исходных кодов Chromium - это вообще Python-серипт, который выполняя проверки дальше вызывает следующие процессы.
Из 2-х бинарных (ELF-формата) реализаций: 1 требует присутствия .git и обязательной настроенной ссылки на сетевой репозиторий GIT, с обновления которого он вообще начинает работу...
Использую вот тот GN именно из полного развёрнутого дерева кодов Chromium:
Код: Выделить всё
olej@R420:~/chromium/src$ pwd
/home/olej/chromium/src
Система help тут самая навороченная, и вариантов генерации предусмотрено множество:
Код: Выделить всё
olej@R420:~/chromium/src$ gn help gen
gn gen [--check] [<ide options>] <out_dir>
Generates ninja files from the current tree and puts them in the given output
directory.
The output directory can be a source-repo-absolute path name such as:
//out/foo
Or it can be a directory relative to the current directory such as:
out/foo
"gn gen --check" is the same as running "gn check". "gn gen --check=system" is
the same as running "gn check --check-system". See "gn help check" for
documentation on that mode.
See "gn help switches" for the common command-line switches.
General options
--ninja-executable=<string>
Can be used to specify the ninja executable to use. This executable will
be used as an IDE option to indicate which ninja to use for building. This
executable will also be used as part of the gen process for triggering a
restat on generated ninja files and for use with --clean-stale.
--clean-stale
This option will cause no longer needed output files to be removed from
the build directory, and their records pruned from the ninja build log and
dependency database after the ninja build graph has been generated. This
option requires a ninja executable of at least version 1.10.0. It can be
provided by the --ninja-executable switch. Also see "gn help clean_stale".
IDE options
GN optionally generates files for IDE. Files won't be overwritten if their
contents don't change. Possibilities for <ide options>
--ide=<ide_name>
Generate files for an IDE. Currently supported values:
"eclipse" - Eclipse CDT settings file.
"vs" - Visual Studio project/solution files.
(default Visual Studio version: 2019)
"vs2013" - Visual Studio 2013 project/solution files.
"vs2015" - Visual Studio 2015 project/solution files.
"vs2017" - Visual Studio 2017 project/solution files.
"vs2019" - Visual Studio 2019 project/solution files.
"xcode" - Xcode workspace/solution files.
"qtcreator" - QtCreator project files.
"json" - JSON file containing target information
--filters=<path_prefixes>
Semicolon-separated list of label patterns used to limit the set of
generated projects (see "gn help label_pattern"). Only matching targets
and their dependencies will be included in the solution. Only used for
Visual Studio, Xcode and JSON.
Visual Studio Flags
--sln=<file_name>
Override default sln file name ("all"). Solution file is written to the
root build directory.
--no-deps
Don't include targets dependencies to the solution. Changes the way how
--filters option works. Only directly matching targets are included.
--winsdk=<sdk_version>
Use the specified Windows 10 SDK version to generate project files.
As an example, "10.0.15063.0" can be specified to use Creators Update SDK
instead of the default one.
--ninja-executable=<string>
Can be used to specify the ninja executable to use when building.
--ninja-extra-args=<string>
This string is passed without any quoting to the ninja invocation
command-line. Can be used to configure ninja flags, like "-j".
Xcode Flags
--xcode-project=<file_name>
Override default Xcode project file name ("all"). The project file is
written to the root build directory.
--xcode-build-system=<value>
Configure the build system to use for the Xcode project. Supported
values are (default to "legacy"):
"legacy" - Legacy Build system
"new" - New Build System
--ninja-executable=<string>
Can be used to specify the ninja executable to use when building.
--ninja-extra-args=<string>
This string is passed without any quoting to the ninja invocation
command-line. Can be used to configure ninja flags, like "-j".
--ide-root-target=<target_name>
Name of the target corresponding to "All" target in Xcode. If unset,
"All" invokes ninja without any target and builds everything.
QtCreator Flags
--ide-root-target=<target_name>
Name of the root target for which the QtCreator project will be generated
to contain files of it and its dependencies. If unset, the whole build
graph will be emitted.
Eclipse IDE Support
GN DOES NOT generate Eclipse CDT projects. Instead, it generates a settings
file which can be imported into an Eclipse CDT project. The XML file contains
a list of include paths and defines. Because GN does not generate a full
.cproject definition, it is not possible to properly define includes/defines
for each file individually. Instead, one set of includes/defines is generated
for the entire project. This works fairly well but may still result in a few
indexer issues here and there.
Generic JSON Output
Dumps target information to a JSON file and optionally invokes a
python script on the generated file. See the comments at the beginning
of json_project_writer.cc and desc_builder.cc for an overview of the JSON
file format.
--json-file-name=<json_file_name>
Overrides default file name (project.json) of generated JSON file.
--json-ide-script=<path_to_python_script>
Executes python script after the JSON file is generated or updated with
new content. Path can be project absolute (//), system absolute (/) or
relative, in which case the output directory will be base. Path to
generated JSON file will be first argument when invoking script.
--json-ide-script-args=<argument>
Optional second argument that will passed to executed script.
Compilation Database
--export-rust-project
Produces a rust-project.json file in the root of the build directory
This is used for various tools in the Rust ecosystem allowing for the
replay of individual compilations independent of the build system.
This is an unstable format and likely to change without warning.
--export-compile-commands[=<target_name1,target_name2...>]
Produces a compile_commands.json file in the root of the build directory
containing an array of “command objects”, where each command object
specifies one way a translation unit is compiled in the project. If a list
of target_name is supplied, only targets that are reachable from any
target in any build file whose name is target_name will be used for
“command objects” generation, otherwise all available targets will be used.
This is used for various Clang-based tooling, allowing for the replay of
individual compilations independent of the build system.
e.g. "foo" will match:
- "//path/to/src:foo"
- "//other/path:foo"
- "//foo:foo"
and not match:
- "//foo:bar"
По поддерживаемым платформам IDE отчётливо видно, что вся эта кухня заточена преимущественно под Window ... повторю:
Код: Выделить всё
--ide=<ide_name>
Generate files for an IDE. Currently supported values:
"eclipse" - Eclipse CDT settings file.
"vs" - Visual Studio project/solution files.
(default Visual Studio version: 2019)
"vs2013" - Visual Studio 2013 project/solution files.
"vs2015" - Visual Studio 2015 project/solution files.
"vs2017" - Visual Studio 2017 project/solution files.
"vs2019" - Visual Studio 2019 project/solution files.
"xcode" - Xcode workspace/solution files.
"qtcreator" - QtCreator project files.
"json" - JSON file containing target information
Re: Chromium инструментарий
Добавлено: 06 сен 2021, 18:18
Olej
Olej писал(а): ↑17 авг 2021, 11:35
Генерация тестового проекта:
Возвращаясь к дереву Chromium и тестовому проекту (см. ранее)...
Olej писал(а): ↑06 сен 2021, 17:43
--ide=<ide_name>
Generate files for an IDE. Currently supported values:
"eclipse" - Eclipse CDT settings file.
"vs" - Visual Studio project/solution files.
(default Visual Studio version: 2019)
"vs2013" - Visual Studio 2013 project/solution files.
"vs2015" - Visual Studio 2015 project/solution files.
"vs2017" - Visual Studio 2017 project/solution files.
"vs2019" - Visual Studio 2019 project/solution files.
"xcode" - Xcode workspace/solution files.
"qtcreator" - QtCreator project files.
"json" - JSON file containing target information
... меня могла бы заинтересовать сборка под qtcreator.
Но для этого нужно иметь установленным (на этом свежем компьютере) сам qtcreator.
Re: Chromium инструментарий
Добавлено: 06 сен 2021, 18:21
Olej
Код: Выделить всё
olej@R420:~/chromium/src/example$ which qtcreator
olej@R420:~/chromium/src/example$
Olej писал(а): ↑06 сен 2021, 18:18
Но для этого нужно иметь установленным (на этом свежем компьютере) сам qtcreator.
Код: Выделить всё
olej@R420:~/chromium/src/example$ apt show qt5-default
Package: qt5-default
Version: 5.12.8+dfsg-0ubuntu1
Priority: optional
Section: universe/libs
Source: qtbase-opensource-src
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 170 kB
Depends: qtbase5-dev (= 5.12.8+dfsg-0ubuntu1) | qtbase5-gles-dev (>= 5.12.8+dfsg), qtchooser (>= 55-gc9562a1-1~)
Suggests: qt5-qmake, qtbase5-dev-tools
Conflicts: qt4-default
Homepage: https://www.qt.io/developers/
Download-Size: 24,4 kB
APT-Sources: http://ubuntu.org.ua/ubuntu focal/universe amd64 Packages
Description: Qt 5 development defaults package
Qt — кросс-платформенная инфраструктура для написания приложений с
пользовательским интерфейсом на C++. Главной особенностью Qt является
богатый набор графических элементов управления стандартного
пользовательского интерфейса.
.
This package sets Qt 5 to be the default Qt version to be used when using
development binaries like qmake. It provides a default configuration for
qtchooser, but does not prevent alternative Qt installations from being
used.
.
This package should not be used for building Debian packages. Take a look
at https://qt-kde-team.pages.debian.net/packagingqtbasedstuff.html for
more information.
Код: Выделить всё
olej@R420:~/chromium/src/example$ apt show qtcreator
Package: qtcreator
Version: 4.11.0-2build2
Priority: optional
Section: universe/devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 115 MB
Depends: libqt5sql5-sqlite, qml-module-qtqml-models2, qml-module-qtquick-controls (>= 5.5.0~), qml-module-qtquick2 (>= 5.5.0~), qtchooser, qtcreator-data (= 4.11.0-2build2), libc6 (>= 2.29), libclang1-8 (>= 1:7~svn334604-1~+0~), libgcc-s1 (>= 3.0), libkf5syntaxhighlighting5, libllvm8 (>= 1:8~svn298832-1~), libqbscore1.13 (>= 1.12.0), libqt5concurrent5 (>= 5.6.2~), libqt5core5a (>= 5.12.2), libqt5designer5 (>= 5.6.2~), libqt5designercomponents5 (>= 5.6.2~), libqt5gui5 (>= 5.12.2) | libqt5gui5-gles (>= 5.12.2), libqt5help5 (>= 5.9.0), libqt5network5 (>= 5.6.2~), libqt5printsupport5 (>= 5.6.2~), libqt5qml5 (>= 5.2.0~rc1), libqt5quick5 (>= 5.9.0~beta) | libqt5quick5-gles (>= 5.9.0~beta), libqt5quickwidgets5 (>= 5.11.0), libqt5script5 (>= 5.6.2~), libqt5serialport5 (>= 5.9.0), libqt5sql5 (>= 5.6.2~), libqt5widgets5 (>= 5.12.2), libqt5xml5 (>= 5.6.2~), libstdc++6 (>= 9), qtbase-abi-5-12-8, qtdeclarative-abi-5-12-8
Recommends: clang, clang-tidy, gdb, make, qmlscene, qt5-doc, qt5-qmltooling-plugins, qtbase5-dev-tools, qtcreator-doc, qtdeclarative5-dev-tools, qttools5-dev-tools, qttranslations5-l10n, qtxmlpatterns5-dev-tools, xterm | x-terminal-emulator
Suggests: clazy (>= 1.5), cmake, g++, git, kate-data, subversion, valgrind
Breaks: qtcreator-data (<< 4.5.2-2~)
Replaces: qtcreator-data (<< 4.5.2-2~)
Homepage: https://doc.qt.io/qt-5/topics-app-development.html
Download-Size: 29,0 MB
APT-Sources: http://ubuntu.org.ua/ubuntu focal/universe amd64 Packages
Description: интегрированная среда разработки (IDE) для Qt
Qt Creator — это кросс-платформенная интегрированная среда разработки
программного обеспечения (IDE), предназначенная для ускорения и упрощения
разработки программ, основанных на Qt.
.
It includes:
* An advanced C++ code editor
* Integrated GUI layout and forms designer
* Project and build management tools
* Integrated, context-sensitive help system
* Visual debugger
* Rapid code navigation tools
* Supports multiple platforms
* Qt Quick Designer