Я использую Bazel для сборки своего проекта и управления зависимостями, потому что его использует TensorFlow. и кажется, что импортировать его через «Базель» не так уж и сложно. Кроме того, я использую bzlmod (новый способ импорта модулей).
Я не могу найти хорошей документации или руководства по правильному импорту модулей. Я новичок в методах сборки C++ (из мира Java/узлов). Я попробовал способ импорта TensorFlow с помощью TensorFlow Serving, как упоминалось в некоторых сообщениях. Но у меня ничего не работает.
На данный момент у меня возникает такая ошибка при попытке синхронизации Bazel с CLion:
Код: Выделить всё
error loading package '@@org_tensorflow~//tensorflow/core': Unable to find package for @@[unknown repo 'local_config_cuda' requested from @@org_tensorflow~]//cuda:build_defs.bzl: The repository '@@[unknown repo 'local_config_cuda' requested from @@org_tensorflow~]' could not be resolved: No repository visible as '@local_config_cuda' from repository '@@org_tensorflow~'. and referenced by '//src/main:my_project_main'
Вот моя текущая конфигурация:
Код: Выделить всё
registry/
modules/
org_tensorflow/
2.15.1/
MODULE.bazel
source.json
metadata.json
bazel_registry.json
src/
main/
BUILD.bazel
main.cc
.bazelrc
MODULE.bazel
WORKSPACE.bazel
Мой .bazelrc выглядит так:
Код: Выделить всё
# Enable Bzlmod for every Bazel command
common --enable_bzlmod --registry=https://bcr.bazel.build --registry=file://%workspace%/registry --experimental_repo_remote_exec
Код: Выделить всё
module(
name = "my_project",
repo_name = "my_project",
)
bazel_dep(name = "bazel_skylib", version = "1.6.1")
bazel_dep(name = "rules_java", version = "7.5.0")
bazel_dep(name = "rules_python", version = "0.31.0")
bazel_dep(name = "org_tensorflow", version = "2.15.1")
Код: Выделить всё
load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")
py_repositories()
python_register_toolchains(
name = "python",
ignore_root_user_error = True,
python_version = "3.9",
)
load("@python//:defs.bzl", "interpreter")
load("@rules_python//python:pip.bzl", "package_annotation", "pip_parse")
NUMPY_ANNOTATIONS = {
"numpy": package_annotation(
additive_build_content = """\
filegroup(
name = "includes",
srcs = glob(["site-packages/numpy/core/include/**/*.h"]),
)
cc_library(
name = "numpy_headers",
hdrs = [":includes"],
strip_include_prefix="site-packages/numpy/core/include/",
)
""",
),
}
pip_parse(
name = "pypi",
annotations = NUMPY_ANNOTATIONS,
python_interpreter_target = interpreter,
requirements_lock = "@org_tensorflow//:requirements_lock_3_9.txt",
)
load("@pypi//:requirements.bzl", "install_deps")
install_deps()
load("@org_tensorflow//tensorflow:workspace3.bzl", "tf_workspace3")
tf_workspace3()
load("@org_tensorflow//tensorflow:workspace2.bzl", "tf_workspace2")
tf_workspace2()
load("@org_tensorflow//tensorflow:workspace1.bzl", "tf_workspace1")
tf_workspace1()
load("@org_tensorflow//tensorflow:workspace0.bzl", "tf_workspace0")
tf_workspace0()
Затем я импортирую код в свой проект с помощью src/main/BUILD.bazel вот так:
Код: Выделить всё
cc_binary(
name = "my_project_main",
srcs = [
"main.cc",
],
deps = [
"@org_tensorflow//tensorflow/core:tensorflow",
],
)
Если у вас есть какие-либо советы, решения, спасибо ты!
Подробнее здесь: https://stackoverflow.com/questions/784 ... -c-project