Tengo el muy simple CMakeLists.txt
CMake en Linux: "plataforma de destino no admite la vinculación dinámica"
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(VTK REQUIRED)
PROJECT(test CXX)
que realmente no hace nada. El paquete VTK se encuentra correctamente en /usr/lib/vtk-5.8/VTKConfig.cmake
. Este archivo incluye una serie de declaraciones del tipo
ADD_LIBRARY(foobar SHARED IMPORTED)
para indicar que la biblioteca compartida libfoobar.so
tendrá que ser vinculado en ejecutables.
Tras la creación de los Makefiles usando el guión anterior, sin embargo, CMake se quejará de que
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
¿Qué significa esta advertencia y cómo se abordado?
Este es un sistema Linux con CMake 2.8.9. Si bien este mensaje de error aparece para todos los paquetes que contienen ADD_LIBRARY(foobar SHARED IMPORTED)
, VTK-5.8 se utiliza como ejemplo aquí.
De hecho. Por alguna razón, 'TARGET_SUPPORTS_SHARED_LIBS' no está configurado aquí en esta máquina Linux. Establecer explícitamente 'SET_PROPERTY (PROPIEDAD GLOBAL TARGET_SUPPORTS_SHARED_LIBS TRUE)' elimina las advertencias. –