Migration Guide V1.6.0

Unification of shared libraries into “libifm3d”

ifm3d has historically been split into modules with the ability do disable certain modules if needed, the main reason for this were some heavy dependencies on things like OpenCV and PCL. In the meantime most of the heavy dependencies have been removed but the split into multiple modules still persists, this has lead to various problems and an increased complexity both in development of ifm3d as well as for code depending on it while offering little benefit. Therefore ifm3d will from now on provide a single library libifm3d.so/ifm3d.dll as opposed to ifm3d_common/ifm3d_device/ifm3d_framegrabber e.t.c.

There are no code changes required for customer code, however the default for logging changed, log messages will now be printed by default on the command line instead of a log file.

Change when linking against libifm3d

With CMake

When calling find_package, no components should be specified

- find_package(ifm3d 1.4.3 CONFIG REQUIRED COMPONENTS device framegrabber deserialize)
+ find_package(ifm3d 1.6.0 CONFIG REQUIRED)

When linking against ifm3d there is a single ifm3d::ifm3d target now

- target_link_libraries(my_application ifm3d::device ifm3d::framegrabber ifm3d::deserialize)
+ target_link_libraries(my_application ifm3d::ifm3d)

Without CMake

Generally speaking instead of linking to ifm3d_common, ifm3d_device, ifm3d_framegrabber, e.t.c. it is now required to link to just ifm3d, e.g. using gcc:

- gcc my_application.cpp -lifm3d_common -lifm3d_device -lfm3d_framegrabber -o my_application
+ gcc my_application.cpp -lifm3d -o my_application