pocoproject / poco

The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
https://pocoproject.org
Other
8.07k stars 2.11k forks source link

Add Support for CMake NO_SONAME Linker Flag #4466

Closed andrewauclair closed 4 months ago

andrewauclair commented 4 months ago

Is your feature request related to a problem? Please describe. We include the Poco .so files together with our software with just .so (no .so.94 file).

Describe the solution you'd like A new flag POCO_USE_NO_SONAME that defaults to false and is passed to the set_target_properties as: NO_NAME POCO_USE_NO_SONAME.

Describe alternatives you've considered None that I can think of. The only other way to do this is for me to manually change the all the Poco CMakeLists.txt files each time we update. There is no way to override this flag in the cmake command.

Additional context This is the change I've made to all the Poco targets we use. The actual change to Poco would be configurable through the POCO_USE_NO_SONAME flag.

set_target_properties(Foundation
    PROPERTIES
    VERSION ${SHARED_LIBRARY_VERSION} SOVERSION ${SHARED_LIBRARY_VERSION}
    OUTPUT_NAME PocoFoundation
    DEFINE_SYMBOL Foundation_EXPORTS
    NO_SONAME TRUE # We don't want to generate an .so and .so.94, just an .so because we install Poco directly alongside our software
)

I'll be submitting a PR with these changes when I get a chance to write them properly.