目录
5.系统中找不到numpy/arrayobject.h头文件
1.GitHub下载matplotlibcpp的源码
matplotlib-cpp/examples/nonblock.cpp at docs · Cryoris/matplotlib-cpp
2.把源码中的matplotlibcpp .h拷贝到工程中
放到工程中,如下
3.完善引用第三方库的BUILD文件
load("@rules_cc//cc:defs.bzl", "cc_library")
package(default_visibility = ["//visibility:public"])
cc_library(
name = "path_planning_lib",
srcs = ["path_planning.cc"],
hdrs = [
"path_planning.h",
"matplotlibcpp.h",
],
deps = [
"//reference_line:reference_line_lib",
"//path_planning/path_convex_space:path_convex_space_lib",
"//path_planning/path_qp_optimize:path_qp_lib",
"//path_planning/common:vehicle_lib",
"@system_python//:python36-lib",
],
copts = ["-I/usr/include/python3.6/"],
)
在path_planning下,完善其BUILD文件:
1.hdrs(头文件)中加入“matplotlibcpp.h”
2.deps(依赖文件)中加入“@system_python//:python36-lib"(系统中存在的python文件,并已经在下述的WORKSPACE中引入(即将系统的python放入沙盒中))
3.copts(编译参数)中添加编译器将要使用到的头文件"-I/usr/include/python3.6/"
4.在WORKSPACE中添加对系统中python的依赖
WORKSPACE中可以为bazel引入外部依赖。当WORKSPACE为空时,将不引入外部依赖。由于在编译时,bazel会将编译所需要用到的内容放入一个沙盒(sandbox)中。所以我们需要告知bazel我们也需要系统中的python,方式如下:
new_local_repository(
name = "system_python",
path = "/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu", # Figure out where it is on your system, this is where it is on mine
build_file_content = """
cc_library(
name = "python36-lib",
srcs = ["libpython3.6.so"],
visibility = ["//visibility:public"],
)
""",
)
使用bazel提供的new_local_repository(name, path, build_file_content)函数,将系统的python引入。
5.系统中找不到numpy/arrayobject.h头文件
报错如下图:
解决方案:
1.确认python已安装numpy库
2.找到numpy库的头文件路径
3.将此头文件路径 链接 至/usr/include/xxx(系统级头文件) 路径下
4.至此,可以正常在C++程序中,像引用stdio.h一样,引用该头文件
转载请注明出处:https://blog.csdn.net/betterthanYSD/article/details/134075196