Ich habe das sehr einfach CMakeLists.txt
CMake auf Linux: „Zielplattform unterstützt keine dynamische Verknüpfung“
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(VTK REQUIRED)
PROJECT(test CXX)
, die wirklich nichts tut. Das Paket VTK ist korrekt unter /usr/lib/vtk-5.8/VTKConfig.cmake
zu finden. Diese Datei enthält eine Reihe von Aussagen des Typs
ADD_LIBRARY(foobar SHARED IMPORTED)
um anzuzeigen, dass die gemeinsam genutzte Bibliothek libfoobar.so
muß in ausführbaren Dateien verknüpft werden.
Nach Makefiles unter Verwendung des obigen Skript erstellen, beschweren CMake wird jedoch, dass
CMake Warning (dev) at /usr/lib/vtk-5.8/VTKTargets.cmake:244 (ADD_LIBRARY):
ADD_LIBRARY called with SHARED option but the target platform does not
support dynamic linking. Building a STATIC library instead. This may lead
to problems.
Call Stack (most recent call first):
/usr/lib/vtk-5.8/VTKConfig.cmake:200 (INCLUDE)
/usr/share/cmake-2.8/Modules/FindVTK.cmake:73 (FIND_PACKAGE)
CMakeLists.txt:4 (FIND_PACKAGE)
This warning is for project developers. Use -Wno-dev to suppress it
Was diese Warnung bedeutet das und wie wird sie behandelt?
Dies ist ein Linux-System mit CMake 2.8.9. Während diese Fehlermeldung für alle Pakete angezeigt wird, die ADD_LIBRARY(foobar SHARED IMPORTED)
enthalten, wird hier VTK-5.8 als Beispiel verwendet.
In der Tat. Aus irgendeinem Grund ist 'TARGET_SUPPORTS_SHARED_LIBS' hier nicht auf diesem Linux-Rechner eingestellt. Explizites Setzen von 'SET_PROPERTY (GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE)' beseitigt die Warnungen. –