Как настроить toolchain в Bazel - PullRequest
       57

Как настроить toolchain в Bazel

0 голосов
/ 27 апреля 2019

Мы планируем использовать Bazel для кросс-компиляции для разных целей Arch, и у нас возникают некоторые проблемы с набором инструментов:

Согласно документам мы настроили цепочку инструментов следующим образом:

toolchain_include_directories_feature = feature(
        name = "toolchain_include_directories",
        enabled = True,
        flag_sets = [
            flag_set(
                actions = [
                    "ACTION_NAMES.assemble",
                    "ACTION_NAMES.preprocess_assemble",
                    "ACTION_NAMES.linkstamp_compile",
                    "ACTION_NAMES.c_compile",
                    "ACTION_NAMES.cpp_compile",
                    "ACTION_NAMES.cpp_header_parsing",
                    "ACTION_NAMES.cpp_module_compile",
                    "ACTION_NAMES.cpp_module_codegen",
                    "ACTION_NAMES.lto_backend",
                    "ACTION_NAMES.clif_match",
                ],
                flag_groups = [
                    flag_group(
                        flags = [
                             "-isystem",
                             "/opt/buildtools/sdk/usr/include",
                        ],
                    ),
                ],
            ),
        ],
    )

и мы получаем ошибку:

ERROR: /home/project/aa/BUILD:1:1: undeclared inclusion(s) in rule '//aa:mylib':
this rule is missing dependency declarations for the following files included by 'aa/source/export.c':
  '/opt/buildtools/sdk/usr/include/stdc-predef.h'

Любые идеи, спасибо.

Добавлено: информация об окружающей среде

LSB Version:    n/a
Distributor ID: SUSE
Description:    SUSE Linux Enterprise Server 12 SP4
Release:        12.4
Codename:       n/a
4.12.14-94.41-default #1 SMP Wed Oct 31 12:25:04 UTC 2018 (3090901) x86_64 x86_64 x86_64 GNU/Linux

Bazel version: 0.24.1

1 Ответ

0 голосов
/ 27 мая 2019

Когда вы создаете конфигурацию цепочки инструментов с помощью create_cc_toolchain_config_info, не забудьте настроить ее параметр cxx_builtin_include_directories, добавив также обычные пути включения, такие как

def _impl(ctx):
    #  [...]
    cxx_builtin_include_directories = [
        "/opt/buildtools/sdk/usr/include/",
        "/usr/include",
    ]

    return [
        cc_common.create_cc_toolchain_config_info(
            cxx_builtin_include_directories = cxx_builtin_include_directories,
            #  [...]
        ),
    ]
...