title: CMake C++ Project librealsense: undefined reference to OpenGL with CLion
body: <p>I am trying to integrate <a href="https://github.com/IntelRealSense/librealsense" rel="nofollow noreferrer">librealsense</a> C++ CLion Project on Ubuntu 20.04.<br />
  Compiling the Librealsense separately in the terminal works just as expected.</p>
  <p>the Project looks like this:</p>
  <pre>
  RS_Pipeline
  .
  ├── build
  ├── main.cpp
  ├── CMakeLists.txt
  └── librealsense        // the integrated lib 
      ├── CMakeLists.txt
      ├── third-party     // libs like GLFW and GLAD which are use in the examples
      ├── examples        // 
      |   ├── example.hpp   // with class to generate OpenGL Window
      └── ...
  </pre>
  <p>The CMakeLists.txt in the base Folder looks rather simple:</p>
  <pre>
  cmake_minimum_required(VERSION 3.2)
  project(RS_Pipeline LANGUAGES CXX C)
  
  set(CMAKE_CXX_STANDARD 11)
  set(OpenGL_GL_PREFERENCE LEGACY)
  
  add_executable(RS_Pipeline main.cpp librealsense/examples/example.hpp)
  
  add_subdirectory(librealsense)
  
  target_link_libraries(${PROJECT_NAME} realsense2)
  
  </pre> 
  <p>As soon as i try to include the submodul into my CLion Project i get a ton of: <code>main.cpp:(.text+0x23c): undefined reference to glViewport</code> error messages and building my main.cpp in the base dir fails.</p>
  <p>somehow the <code>#include &lt;librealsense2/rs.hpp&gt; #include &quot;librealsense/examples/example.hpp&quot;</code>
  works fine and even the intellisense finds all the functions.</p>
  <p><em><strong>PLUS:</strong></em> the included examples within the librealsense Library also compile without any problem. (They use exactly the same <code>#include &quot;librealsense/examples/example.hpp&quot;</code>.</p>
  <p>It looks like, that CLion just dose not link find the right openGL in my own main.cpp resp. if i include it from example.hpp.</p>
  <pre>
  ====================[ Build | RS_Pipeline | Release ]===========================
  /snap/clion/175/bin/cmake/linux/bin/cmake --build /home/lukas/Development/Cpp/RS_Pipeline/cmake-build-release --target RS_Pipeline
  [0/1] Re-running CMake...
  -- Checking internet connection...
  -- Internet connection identified
  -- Info: REALSENSE_VERSION_STRING=2.50.0
  -- Setting Unix configurations
  -- Building libcurl enabled
  -- using RS2_USE_V4L2_BACKEND
  -- Could NOT find apriltag (missing: APRILTAG_INC APRILTAG_LIB) 
  -- Unable to find apriltag library, skipping pose-apriltag example
  -- Check for updates capability added to realsense-viewer
  -- Check for updates capability added to realsense-depth-quality
  -- Building with TM2
  -- Fetching recommended firmwares:
  -- 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
  -- Download firmware 0;"returning early; file already exists with expected SHA1 hash" for D4XX_FW_Image-5.13.0.50.bin
  -- https://librealsense.intel.com/Releases/SR300/FW/SR3XX_FW_Image-3.26.1.0.bin
  -- Download firmware 0;"returning early; file already exists with expected SHA1 hash" for SR3XX_FW_Image-3.26.1.0.bin
  -- https://librealsense.intel.com/Releases/TM2/FW/target/0.2.0.951/target-0.2.0.951.mvcmd
  -- Download firmware 0;"returning early; file already exists with expected SHA1 hash" for target-0.2.0.951.mvcmd
  -- https://librealsense.intel.com/Releases/L5xx/FW/L51X_FW_Image-1.5.8.1.bin
  -- Download firmware 0;"returning early; file already exists with expected SHA1 hash" for L51X_FW_Image-1.5.8.1.bin
  -- https://librealsense.intel.com/Releases/L5xx/FW/L53X_FW_Image-3.5.5.1.bin
  -- Download firmware 0;"returning early; file already exists with expected SHA1 hash" for L53X_FW_Image-3.5.5.1.bin
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /home/lukas/Development/Cpp/RS_Pipeline/cmake-build-release
  [1/1] Linking CXX executable RS_Pipeline
  FAILED: 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: in function `set_viewport(rect const&)':
  main.cpp:(.text+0x23c): undefined reference to `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: in function `draw_pointcloud(float, float, glfw_state&, rs2::points&)':
  main.cpp:(.text+0x2bb): undefined reference to `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): undefined reference to `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): undefined reference to `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: in function `draw_pointcloud_wrt_world(float, float, glfw_state&, rs2::points&, rs2_pose&, float*, std::vector >&)':
  main.cpp:(.text+0x98b): undefined reference to `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: in function `set_viewport(rect const&)':
  main.cpp:(.text+0x27b): undefined reference to `glOrtho'
  collect2: error: ld returned 1 exit status
  ninja: build stopped: subcommand failed.
  
  </pre>