koide3 / iridescence

3D visualization library for rapid prototyping of 3D algorithms
https://koide3.github.io/iridescence/
MIT License
298 stars 32 forks source link

make error: "glsl_shader.cpp:289:36: error: cannot bind non-const lvalue reference of type ‘std::__cxx11::basic_string<char>&’ to an rvalue of type ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’" #58

Closed Benson722 closed 1 year ago

Benson722 commented 1 year ago

pi@pi-virtual-machine:~/iridescence/build$ make -j$(nproc) Scanning dependencies of target gl_imgui [ 1%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/imgui.cpp.o [ 4%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/gl3w/gl3w.cpp.o [ 4%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/imgui_demo.cpp.o [ 6%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/ImGuizmo/ImCurveEdit.cpp.o [ 6%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/imgui_tables.cpp.o [ 8%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/imgui_draw.cpp.o [ 9%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/ImGuizmo/ImGradient.cpp.o [ 10%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/imgui_widgets.cpp.o [ 12%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/ImGuizmo/ImGuizmo.cpp.o [ 13%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/ImGuizmo/ImSequencer.cpp.o [ 15%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/implot/implot.cpp.o [ 16%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/implot/implot_items.cpp.o [ 17%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/backends/imgui_impl_glfw.cpp.o [ 19%] Building CXX object CMakeFiles/gl_imgui.dir/thirdparty/imgui/backends/imgui_impl_opengl3.cpp.o /home/pi/iridescence/thirdparty/imgui/backends/imgui_impl_opengl3.cpp:117:32: warning: unknown option after ‘#pragma GCC diagnostic’ kind [-Wpragmas]

pragma GCC diagnostic ignored "-Wcast-function-type" // warning: cast between incompatible function types

                            ^~~~~~~~~~~~~~~~~~~~~~

[ 20%] Linking CXX shared library libgl_imgui.so [ 20%] Built target gl_imgui Scanning dependencies of target iridescence [ 21%] Building CXX object CMakeFiles/iridescence.dir/src/glk/path_std.cpp.o [ 23%] Building CXX object CMakeFiles/iridescence.dir/src/glk/mesh.cpp.o [ 24%] Building CXX object CMakeFiles/iridescence.dir/src/glk/mesh_model.cpp.o [ 27%] Building CXX object CMakeFiles/iridescence.dir/src/glk/thin_lines.cpp.o [ 27%] Building CXX object CMakeFiles/iridescence.dir/src/glk/lines.cpp.o [ 28%] Building CXX object CMakeFiles/iridescence.dir/src/glk/trajectory.cpp.o [ 31%] Building CXX object CMakeFiles/iridescence.dir/src/glk/async_buffer_copy.cpp.o [ 31%] Building CXX object CMakeFiles/iridescence.dir/src/glk/gridmap.cpp.o [ 32%] Building CXX object CMakeFiles/iridescence.dir/src/glk/pointcloud_buffer.cpp.o [ 34%] Building CXX object CMakeFiles/iridescence.dir/src/glk/pointnormals_buffer.cpp.o [ 35%] Building CXX object CMakeFiles/iridescence.dir/src/glk/point_correspondences.cpp.o [ 36%] Building CXX object CMakeFiles/iridescence.dir/src/glk/normal_distributions.cpp.o [ 38%] Building CXX object CMakeFiles/iridescence.dir/src/glk/indexed_pointcloud_buffer.cpp.o [ 39%] Building CXX object CMakeFiles/iridescence.dir/src/glk/splatting.cpp.o [ 41%] Building CXX object CMakeFiles/iridescence.dir/src/glk/colormap.cpp.o [ 42%] Building CXX object CMakeFiles/iridescence.dir/src/glk/texture.cpp.o [ 43%] Building CXX object CMakeFiles/iridescence.dir/src/glk/glsl_shader.cpp.o [ 45%] Building CXX object CMakeFiles/iridescence.dir/src/glk/frame_buffer.cpp.o [ 46%] Building CXX object CMakeFiles/iridescence.dir/src/glk/pixel_buffer.cpp.o [ 47%] Building CXX object CMakeFiles/iridescence.dir/src/glk/shader_storage_buffer.cpp.o [ 49%] Building CXX object CMakeFiles/iridescence.dir/src/glk/query.cpp.o [ 50%] Building CXX object CMakeFiles/iridescence.dir/src/glk/debug_output.cpp.o [ 52%] Building CXX object CMakeFiles/iridescence.dir/src/glk/transform_feedback.cpp.o [ 53%] Building CXX object CMakeFiles/iridescence.dir/src/glk/texture_renderer.cpp.o [ 54%] Building CXX object CMakeFiles/iridescence.dir/src/glk/primitives/primitives.cpp.o [ 56%] Building CXX object CMakeFiles/iridescence.dir/src/glk/io/ascii_io.cpp.o [ 57%] Building CXX object CMakeFiles/iridescence.dir/src/glk/io/ply_io.cpp.o [ 58%] Building CXX object CMakeFiles/iridescence.dir/src/glk/io/png_io.cpp.o [ 60%] Building CXX object CMakeFiles/iridescence.dir/src/glk/io/jpeg_io.cpp.o /home/pi/iridescence/src/glk/glsl_shader.cpp: In member function ‘GLuint glk::GLSLShader::read_shader_from_file(const string&, const std::unordered_map<std::cxx11::basic_string, std::cxx11::basic_string >&, const string&, GLuint)’: /home/pi/iridescence/src/glk/glsl_shader.cpp:289:36: error: cannot bind non-const lvalue reference of type ‘std::cxx11::basic_string&’ to an rvalue of type ‘std::cxx11::string {aka std::cxx11::basic_string}’ boost::split(error_lines, std::string(error_message.begin(), error_message.end()), boost::is_any_of("\n")); ^~~~~~~~~~~~~~ In file included from /usr/include/boost/algorithm/string.hpp:23:0, from /home/pi/iridescence/src/glk/glsl_shader.cpp:15: /usr/include/boost/algorithm/string/split.hpp:140:35: note: initializing argument 2 of ‘SequenceSequenceT& boost::algorithm::split(SequenceSequenceT&, RangeT&, PredicateT, boost::algorithm::token_compress_mode_type) [with SequenceSequenceT = std::vector<std::cxx11::basic_string >; RangeT = std::__cxx11::basic_string; PredicateT = boost::algorithm::detail::is_any_ofF]’ inline SequenceSequenceT& split( ^~~~~ [ 61%] Building CXX object CMakeFiles/iridescence.dir/src/glk/io/image_io.cpp.o [ 63%] Building CXX object CMakeFiles/iridescence.dir/src/glk/effects/plain_rendering.cpp.o [ 64%] Building CXX object CMakeFiles/iridescence.dir/src/glk/effects/screen_space_splatting.cpp.o [ 65%] Building CXX object CMakeFiles/iridescence.dir/src/glk/effects/screen_space_lighting.cpp.o [ 67%] Building CXX object CMakeFiles/iridescence.dir/src/glk/effects/screen_space_ambient_occlusion.cpp.o CMakeFiles/iridescence.dir/build.make:270: recipe for target 'CMakeFiles/iridescence.dir/src/glk/glsl_shader.cpp.o' failed make[2]: [CMakeFiles/iridescence.dir/src/glk/glsl_shader.cpp.o] Error 1 CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/iridescence.dir/all' failed make[1]: [CMakeFiles/iridescence.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2


When I try to $make , it happens to fail. My cmake version is 3.11.0 and ROS version is melodic. Could you please help me solve it? Thank you.

n-patiphon commented 11 months ago

@Benson722 How did you solve this problem? Would you mind sharing your solution with the community as well?

n-patiphon commented 11 months ago

I think it's some dependency problem. However, I'm not sure exactly which one was the problem. I could compile it in my devcontainer setup.

Benson722 commented 11 months ago

@Benson722 How did you solve this problem? Would you mind sharing your solution with the community as well?

Thank you for your problem. I have solved the problem in Aug. I am sorry that I forget how to solve it. :(

But in my opinion, only in Ubuntu 20.04, the version 1.71 of "boost" dependency allows "boost::split" to accept the right value, so there is error in Ubuntu 18.04. If you have time to try in Ubuntu 18.04, you can solve it by:

error: cannot bind non-const lvalue reference of type ‘std::__cxx11::basic_string&’ to an rvalue of type ‘std::cxx11::string {aka std::cxx11::basic_string}’ boost::split(error_lines, std::string(error_message.begin(), error_message.end()), boost::is_any_of("\n")); ------------------------------------> auto s = std::string(error_message.begin(), error_message.end()); boost::split(error_lines, s, boost::is_any_of("\n"));

btw, it is only my opinion, if there is something wrong, perhaps the best way to use "iridescence" is to use Ubuntu 20.04. :)

n-patiphon commented 11 months ago

Thank you for your reply. I think that makes sense.

Btw, my main development environment system is Ubuntu 22.04 (devcontainer). I actually have no problem with Ubuntu 22.04 in devcontainer, but couldn’t get it to compiled on my host machine (which is also 22.04). I’m pretty sure it’s a dependency issue, but didn’t get a chance to properly investigate.

Benson722 commented 11 months ago

Thank you for your reply. I think that makes sense.

Btw, my main development environment system is Ubuntu 22.04 (devcontainer). I actually have no problem with Ubuntu 22.04 in devcontainer, but couldn’t get it to compiled on my host machine (which is also 22.04). I’m pretty sure it’s a dependency issue, but didn’t get a chance to properly investigate.

Dependency issue is indeed a headache problem. Perhaps there exists a dependency conflict in your host machine. Hope you can solve it.

Best wishes