ofnode / of

CMake openFrameworks for Linux, OS X and Windows.
71 stars 14 forks source link

Visibility flag for freeimage to enable linking different jpeg versions #3

Closed lopho closed 7 years ago

lopho commented 7 years ago

This enables linking of other libraries that are built against different versions of libjpeg or libjpeg-turbo. GCC exports symbols visible by default. Setting symbol visibility to hidden avoids conflicts with libraries built against, for example, system libraries.

Actually, it is set in the make file of the freeimage subdir, which is not used by the cmake build. https://github.com/ofnode/of/blob/master/src/freeimage/Makefile.gnu#L18

avilleret commented 7 years ago

Thanks a lot for this. If think the same should be done for Poco library which links by default to it's own version of libpcre (among others) and clash when linking ofApp dynamically to Gstreamer (with lots of duplicate symbol from libpcre)

lopho commented 7 years ago

This isn't one of my use cases, and I haven't worked with gstreamer yet. So take my comment with a grain of salt.

of has a cmake flag "POCO_UNBUNDLED". As far as I understand this should link poco against system libraries, but I'm not sure.

Freeimage is compiled directly into openframeworks.so, but Poco is linked dynamically, so hiding Poco's symbols should make them unusable for openframeworks. But: If all of Poco's public API is treated with a macro defining them as "visible" in the source it should work though.

avilleret commented 7 years ago

I was referring to this: https://github.com/ofnode/of/issues/5 and in the case where OF_STATIC=ON