【发布时间】:2022-01-12 16:21:19
【问题描述】:
我正在尝试在 Ubuntu 20.04 上集成 librealsense C++ CLion 项目。
在终端中单独编译 Librealsense 可以正常工作。
项目如下所示:
RS_管道 . ├── 建造 ├── main.cpp ├── CMakeLists.txt └── librealsense // 集成库 ├── CMakeLists.txt ├── third-party // 示例中使用的 GLFW 和 GLAD 等库 ├── 例子// | ├── example.hpp // 带类生成OpenGL Window └── ...基本文件夹中的 CMakeLists.txt 看起来相当简单:
cmake_minimum_required(版本 3.2) 项目(RS_Pipeline LANGUAGES CXX C) 设置(CMAKE_CXX_STANDARD 11) 设置(OpenGL_GL_PREFERENCE LEGACY) add_executable(RS_Pipeline main.cpp librealsense/examples/example.hpp) add_subdirectory(librealsense) target_link_libraries(${PROJECT_NAME} realsense2)一旦我尝试将子模块包含到我的 CLion 项目中,我就会收到大量:main.cpp:(.text+0x23c): undefined reference to glViewport 错误消息,并且在基本目录中构建我的 main.cpp 失败。
不知何故#include <librealsense2/rs.hpp> #include "librealsense/examples/example.hpp"
工作正常,甚至智能感知也能找到所有功能。
另外: librealsense 库中包含的示例也可以毫无问题地编译。 (他们使用完全相同的#include "librealsense/examples/example.hpp"。
看起来,CLion 只是没有在我自己的 main.cpp 中找到正确的 openGL 链接。如果我从 example.hpp 中包含它。
=====================[构建| RS_管道 |发布]============================ /snap/clion/175/bin/cmake/linux/bin/cmake --build /home/lukas/Development/Cpp/RS_Pipeline/cmake-build-release --target RS_Pipeline [0/1] 重新运行 CMake... -- 正在检查互联网连接... -- 已识别 Internet 连接 -- 信息:REALSENSE_VERSION_STRING=2.50.0 -- 设置 Unix 配置 -- 启用构建 libcurl -- 使用 RS2_USE_V4L2_BACKEND -- 找不到 apriltag(缺少:APRILTAG_INC APRILTAG_LIB) -- 找不到 apriltag 库,跳过pose-apriltag 示例 -- 检查添加到 realsense-viewer 的更新功能 -- 检查添加到 realsense-depth-quality 的更新功能 -- 使用 TM2 构建 -- 获取推荐的固件: -- D4XX_FW_VERSION: 5.13.0.50 -- SR3XX_FW_VERSION: 3.26.1.0 -- T26X_FW_VERSION: 0.2.0.951 -- L51X_FW_VERSION: 1.5.8.1 -- L53X_FW_VERSION: 3.5.5.1 -- https://librealsense.intel.com/Releases/RS4xx/FW/D4XX_FW_Image-5.13.0.50.bin -- 下载固件 0;“提前返回;文件已经存在,具有预期的 SHA1 哈希”,用于 D4XX_FW_Image-5.13.0.50.bin -- https://librealsense.intel.com/Releases/SR300/FW/SR3XX_FW_Image-3.26.1.0.bin -- 下载固件 0;“提前返回;SR3XX_FW_Image-3.26.1.0.bin 的文件已存在预期的 SHA1 哈希” -- https://librealsense.intel.com/Releases/TM2/FW/target/0.2.0.951/target-0.2.0.951.mvcmd -- 下载固件 0;“提前返回;文件已存在,具有预期的 SHA1 哈希”,用于 target-0.2.0.951.mvcmd -- https://librealsense.intel.com/Releases/L5xx/FW/L51X_FW_Image-1.5.8.1.bin -- 下载固件 0;“提前返回;文件已存在,具有预期的 SHA1 哈希”,用于 L51X_FW_Image-1.5.8.1.bin -- https://librealsense.intel.com/Releases/L5xx/FW/L53X_FW_Image-3.5.5.1.bin -- 下载固件 0;“提前返回;文件已存在,具有预期的 SHA1 哈希”,用于 L53X_FW_Image-3.5.5.1.bin -- 配置完成 -- 生成完成 -- 构建文件已写入:/home/lukas/Development/Cpp/RS_Pipeline/cmake-build-release [1/1] 链接 CXX 可执行文件 RS_Pipeline 失败:RS_Pipeline : && /usr/bin/c++ -O3 -DNDEBUG -rdynamic CMakeFiles/RS_Pipeline.dir/main.cpp.o -o RS_Pipeline -Wl,-rpath,/home/lukas/Development/Cpp/RS_Pipeline/cmake-build-release /librealsense librealsense/librealsense2.so.2.50.0 -lglfw && : /usr/bin/ld: CMakeFiles/RS_Pipeline.dir/main.cpp.o: 在函数'set_viewport(rect const&)'中: main.cpp:(.text+0x23c): 未定义对“glViewport”的引用 /usr/bin/ld: main.cpp:(.text+0x241): undefined reference to `glLoadIdentity' /usr/bin/ld: main.cpp:(.text+0x24b): undefined reference to `glMatrixMode' /usr/bin/ld: CMakeFiles/RS_Pipeline.dir/main.cpp.o: 在函数‘draw_pointcloud(float, float, glfw_state&, rs2::points&)'中: main.cpp:(.text+0x2bb): 对“glLoadIdentity”的未定义引用 /usr/bin/ld: main.cpp:(.text+0x2c5): undefined reference to `glPushAttrib' /usr/bin/ld: main.cpp:(.text+0x2e0): undefined reference to `glClearColor' /usr/bin/ld: main.cpp:(.text+0x2ea): 未定义对“glClear”的引用 /usr/bin/ld: main.cpp:(.text+0x2f4): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0x2f9): undefined reference to `glPushMatrix' /usr/bin/ld: main.cpp:(.text+0x32a): undefined reference to `gluPerspective' /usr/bin/ld: main.cpp:(.text+0x334): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0x339): undefined reference to `glPushMatrix' /usr/bin/ld: main.cpp:(.text+0x36c): undefined reference to `gluLookAt' /usr/bin/ld: main.cpp:(.text+0x394): undefined reference to `glTranslatef' /usr/bin/ld: main.cpp:(.text+0x3b2): undefined reference to `glRotated' /usr/bin/ld: main.cpp:(.text+0x3cf): 对“glRotated”的未定义引用 /usr/bin/ld: main.cpp:(.text+0x3e3): undefined reference to `glTranslatef' /usr/bin/ld: main.cpp:(.text+0x3f6): undefined reference to `glPointSize' /usr/bin/ld: main.cpp:(.text+0x400): undefined reference to `glEnable' /usr/bin/ld: main.cpp:(.text+0x40a): undefined reference to `glEnable' /usr/bin/ld: main.cpp:(.text+0x417): undefined reference to `glBindTexture' /usr/bin/ld: main.cpp:(.text+0x437): undefined reference to `glTexParameterfv' /usr/bin/ld: main.cpp:(.text+0x44b): undefined reference to `glTexParameteri' /usr/bin/ld: main.cpp:(.text+0x45f): undefined reference to `glTexParameteri' /usr/bin/ld: main.cpp:(.text+0x466): undefined reference to `glBegin' /usr/bin/ld: main.cpp:(.text+0x516): undefined reference to `glEnd' /usr/bin/ld: main.cpp:(.text+0x51b): undefined reference to `glPopMatrix' /usr/bin/ld: main.cpp:(.text+0x525): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0x52a): undefined reference to `glPopMatrix' /usr/bin/ld: main.cpp:(.text+0x52f): undefined reference to `glPopAttrib' /usr/bin/ld: main.cpp:(.text+0x558): undefined reference to `glVertex3fv' /usr/bin/ld: main.cpp:(.text+0x566): undefined reference to `glTexCoord2fv' /usr/bin/ld: CMakeFiles/RS_Pipeline.dir/main.cpp.o: 在函数`draw_pointcloud_wrt_world(float, float, glfw_state&, rs2::points&, rs2_pose&, float*, std::vector >&)'中: main.cpp:(.text+0x98b): 未定义对“glLoadIdentity”的引用 /usr/bin/ld: main.cpp:(.text+0x995): undefined reference to `glPushAttrib' /usr/bin/ld: main.cpp:(.text+0x9b0): undefined reference to `glClearColor' /usr/bin/ld: main.cpp:(.text+0x9ba): undefined reference to `glClear' /usr/bin/ld: main.cpp:(.text+0x9c4): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0x9c9): undefined reference to `glPushMatrix' /usr/bin/ld: main.cpp:(.text+0x9fa): undefined reference to `gluPerspective' /usr/bin/ld: main.cpp:(.text+0xa04): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0xa09): undefined reference to `glPushMatrix' /usr/bin/ld: main.cpp:(.text+0xa2f): undefined reference to `glTranslatef' /usr/bin/ld: main.cpp:(.text+0xa4a): undefined reference to `glRotated' /usr/bin/ld: main.cpp:(.text+0xa65): undefined reference to `glRotated' /usr/bin/ld: main.cpp:(.text+0xa79): undefined reference to `glTranslatef' /usr/bin/ld: main.cpp:(.text+0xa83): undefined reference to `glEnable' /usr/bin/ld: main.cpp:(.text+0xa90): undefined reference to `glLineWidth' /usr/bin/ld: main.cpp:(.text+0xa9a): undefined reference to `glBegin' /usr/bin/ld: main.cpp:(.text+0xac4): undefined reference to `glColor3f' /usr/bin/ld: main.cpp:(.text+0xad8): undefined reference to `glVertex3f' /usr/bin/ld: main.cpp:(.text+0xae2): undefined reference to `glEnd' /usr/bin/ld: main.cpp:(.text+0xaef): undefined reference to `glLineWidth' /usr/bin/ld: main.cpp:(.text+0xb02): undefined reference to `glColor3f' /usr/bin/ld: main.cpp:(.text+0xb2f): undefined reference to `glMultMatrixf' /usr/bin/ld: main.cpp:(.text+0xb37): undefined reference to `glMultMatrixf' /usr/bin/ld: main.cpp:(.text+0xb4a): undefined reference to `glPointSize' /usr/bin/ld: main.cpp:(.text+0xb54): undefined reference to `glEnable' /usr/bin/ld: main.cpp:(.text+0xb5e): undefined reference to `glEnable' /usr/bin/ld: main.cpp:(.text+0xb71): undefined reference to `glBindTexture' /usr/bin/ld: main.cpp:(.text+0xb91): undefined reference to `glTexParameterfv' /usr/bin/ld: main.cpp:(.text+0xba5): undefined reference to `glTexParameteri' /usr/bin/ld: main.cpp:(.text+0xbb9): undefined reference to `glTexParameteri' /usr/bin/ld: main.cpp:(.text+0xbc0): undefined reference to `glBegin' /usr/bin/ld: main.cpp:(.text+0xc76): undefined reference to `glEnd' /usr/bin/ld: main.cpp:(.text+0xc7b): undefined reference to `glPopMatrix' /usr/bin/ld: main.cpp:(.text+0xc85): undefined reference to `glMatrixMode' /usr/bin/ld: main.cpp:(.text+0xc8a): undefined reference to `glPopMatrix' /usr/bin/ld: main.cpp:(.text+0xc8f): undefined reference to `glPopAttrib' /usr/bin/ld: main.cpp:(.text+0xcc0): undefined reference to `glVertex3fv' /usr/bin/ld: main.cpp:(.text+0xcce): undefined reference to `glTexCoord2fv' /usr/bin/ld: CMakeFiles/RS_Pipeline.dir/main.cpp.o: 在函数'set_viewport(rect const&)'中: main.cpp:(.text+0x27b): 未定义对“glOrtho”的引用 collect2:错误:ld 返回 1 个退出状态 忍者:构建停止:子命令失败。【问题讨论】:
标签: c++ linux opengl cmake realsense