c++ - 如何在编译时包含本地编译的 C++ 库?
问题描述
我已经成功编译了这个库https://github.com/xdspacelab/openvslam,但是我现在将它包含在 C++ 程序中时遇到了麻烦。
这是最终的目录结构:
.
├── 3rd
├── build
├── camera_params
├── cmake
├── docs
├── example
├── frames
├── frames_to_localise
├── maps
├── orb_vocab
├── ros
├── src
├── test
├── videos
└── viewer
现在这是我使用的命令:
cd /path/to/openvslam
mkdir build && cd build
cmake \
-DBUILD_WITH_MARCH_NATIVE=ON \
-DUSE_PANGOLIN_VIEWER=OFF \
-DUSE_SOCKET_PUBLISHER=ON \
-DUSE_STACK_TRACE_LOGGER=ON \
-DBOW_FRAMEWORK=DBoW2 \
-DBUILD_TESTS=ON \
..
make -j4
根据文档,https://openvslam.readthedocs.io/en/master/installation.html#subsection-common-linux-macos
我的理解是,这会在本地安装库而不是在系统范围内(例如在 /usr/local/bin 中)。
所以我尝试编译一个如果他们的例子https://github.com/xdspacelab/openvslam/blob/master/example/run_image_localization.cc
像这样:g++ run_image_localization.cc
我得到这个错误:
In file included from run_image_localization.cc:2:
./util/image_util.h:19:33: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
virtual ~image_sequence() = default;
^
run_image_localization.cc:10:10: fatal error: 'openvslam/system.h' file not found
#include "openvslam/system.h"
^~~~~~~~~~~~~~~~~~~~
1 warning and 1 error generated.
有道理,因为openvslam
不包括在内。我尝试了不同的标志,例如 -L、-I 等,但到目前为止没有任何效果。有没有标准的解决方案?
PS:临时解决方案是VERBOSE = 1
在运行 make 时设置并复制粘贴用于编译示例的命令...该命令有 40 多行,在我的终端上呈现命令比编译 .cc 需要更多时间文件...
编辑:我使用的是 Mac
解决方案
推荐阅读
- ffmpeg - 使用 libav* 将原始帧 (D3D11Texture2D) 编码为 rtsp 流
- sql - DBeaver(或类似的):有没有办法暂时停用一行?
- kubernetes - Kubernetes:在 PersistentVolume 主机路径中使用环境变量/ConfigMap
- r - 使用 fct_reorder() 和 ..prop 使用 ggplot 对 1 轴进行排序
- android - 如何从非操作栏按钮打开选项菜单
- python - 如何在不使用“导入”或熊猫的情况下在 python 中的组内进行比较?
- amazon-web-services - 放大配置不显示任何内容
- c++ - 使用 SetLocaleInfo 设置 UI 语言窗口
- sql - 有没有办法找到蜂巢的累积差异
- tensorflow - 使用 tf.keras.Sequential 时,“str”对象没有属性“_keras_mask”错误