[CMake] target_link_libraries generates -llibXX.so.0 ld call
Rafael Sadowski
rafael at sizeofvoid.org
Sun Aug 19 03:52:37 EDT 2018
Hi CMake-users,
I always run into the same CMmke/ld(1) issue with some KDE
Applications[1] on OpenBSD.
For example artikulate-17.12.3.
artikulatesound library in libsound/src/CMakeLists.txt[2]
-----------------------------------
# enable exceptions for this library
kde_enable_exceptions()
set(sound_LIB_SRCS
backendinterface.cpp
capturedevicecontroller.cpp
outputdevicecontroller.cpp
capturebackendinterface.cpp
outputbackendinterface.cpp
libsound_debug.cpp
)
add_library(artikulatesound SHARED ${sound_LIB_SRCS})
generate_export_header(artikulatesound BASE_NAME libsound)
target_link_libraries(
artikulatesound
LINK_PUBLIC
KF5::CoreAddons
KF5::I18n
)
# internal library without any API or ABI guarantee
set(GENERIC_LIB_VERSION "0")
set(GENERIC_LIB_SOVERSION "0")
set_target_properties(
artikulatesound PROPERTIES
VERSION ${GENERIC_LIB_VERSION}
SOVERSION ${GENERIC_LIB_SOVERSION}
)
install(
TARGETS artikulatesound
${INSTALL_TARGETS_DEFAULT_ARGS}
)
-----------------------------------
artikulatesound is used in
libsound/src/qtgstreamerbackend/CMakeLists.txt[3]:
-----------------------------------
add_library(qtgstreamerbackend MODULE ${qtgstreamerbackend_SRCS})
target_link_libraries(
qtgstreamerbackend
LINK_PUBLIC
artikulatesound
KF5::CoreAddons
${QTGLIB_LIBRARIES}
${QTGLIB_LIBRARY}
${QTGSTREAMER_LIBRARIES}
)
install(TARGETS qtgstreamerbackend DESTINATION ${PLUGIN_INSTALL_DIR}/artikulate/libsound)
-----------------------------------
This causes the following issue:
-----------------------------------
FAILED: libsound/src/qtmultimediabackend/qtmultimediabackend.so
: && /usr/ports/pobj/artikulate-17.12.3/bin/c++ -fPIC -O2 -pipe -std=c++0x -fno-operator-names
-Wno-gnu-zero-variadic-macro-arguments -Wall -Wextra -Wcast-align -Wchar-subscripts
-Wformat-security -Wno-long-long -Wpointer-arith -Wundef -Wnon-virtual-dtor -Woverloaded-virtual
-Werror=return-type -Wvla -Wdate-time -fdiagnostics-color=always -fexceptions -DNDEBUG
-Wl,--fatal-warnings -Wl,--enable-new-dtags -shared -o libsound/src/qtmultimediabackend/qtmultimediabackend.so
libsound/src/qtmultimediabackend/CMakeFiles/qtmultimediabackend.dir/qtmultimediabackend.cpp.o
libsound/src/qtmultimediabackend/CMakeFiles/qtmultimediabackend.dir/qtmultimediacapturebackend.cpp.o
libsound/src/qtmultimediabackend/CMakeFiles/qtmultimediabackend.dir/qtmultimediaoutputbackend.cpp.o
libsound/src/qtmultimediabackend/CMakeFiles/qtmultimediabackend.dir/
/libsound_debug.cpp.o libsound/src/qtmultimediabackend/CMakeFiles/qtmultimediabackend.dir/qtmultimediabackend_autogen/mocs_compilation.cpp.o
-L/usr/ports/pobj/artikulate-17.12.3/build-amd64/libsound/src -L/usr/local/lib/qt5/. -L/usr/local/lib
-Wl,-rpath,/usr/ports/pobj/artikulate-17.12.3/build-amd64/libsound/src:/usr/local/lib/qt5/.:/usr/local/lib:/usr/X11R6/lib:
-llibartikulatesound.so.0 -lQt5Multimedia -lKF5CoreAddons -lKF5I18n -lQt5Network -lQt5Gui -lQt5Core
-Wl,-rpath-link,/usr/X11R6/lib:/usr/local/lib && :
/usr/bin/ld: cannot find -llibartikulatesound.so.0
-----------------------------------
I don't think it's an artikulate/KDE issue much more an OpenBSD+CMake
issue.
$ cmake --version
cmake version 3.10.2
$ ninja --version
1.8.2
$ dmesg| head
OpenBSD 6.4-beta (GENERIC.MP) #206: Sun Aug 12 22:55:59 MDT 2018
deraadt at amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
I am grateful for any kind of help.
Rafael Sadowski
[1]: https://www.kde.org/announcements/announce-applications-18.08.0.php
[2]: https://github.com/KDE/artikulate/blob/master/libsound/src/CMakeLists.txt
[3]: https://github.com/KDE/artikulate/blob/master/libsound/src/qtgstreamerbackend/CMakeLists.txt
More information about the CMake
mailing list