CMake в Linux: "целевая платформа не поддерживает динамическую компоновку"
у меня очень простой CMakeLists.txt
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
FIND_PACKAGE(VTK REQUIRED)
PROJECT(test CXX)
это действительно ничего не делает. Пакет VTK правильно найден под /usr/lib/vtk-5.8/VTKConfig.cmake
. Этот файл включает в себя ряд операторов типа
ADD_LIBRARY(foobar SHARED IMPORTED)
, чтобы указать, что общая библиотека libfoobar.so
необходимо будет связать в исполняемых файлах.
при создании Makefiles с использованием вышеуказанного скрипта, однако, CMake будет жаловаться, что
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
что означает это предупреждение и как он занимается с?
это система Linux с CMake 2.8.9. Хотя это сообщение об ошибке появляется для всех пакетов, содержащих ADD_LIBRARY(foobar SHARED IMPORTED)
, VTK-5.8 используется в качестве примера здесь.
2 ответов
это сообщение об ошибке возникает, когда глобальное свойство CMake TARGET_SUPPORTS_SHARED_LIBS имеет значение false, и вы используете общую библиотеку. См.Source/cmAddLibraryCommand.cxx
строка 100 в источнике CMake.
обычно это не должно происходить, если вы не выполняете перекрестную компиляцию для очень простой системы (встроенной ОС).
Я подозреваю, что либо это ошибка в последней версии CMake, либо вы неправильно настроили CMake.
проект устанавливает некоторые важные переменные о plarform.
не вызывайте модули FIND_ * перед установкой имени в PROJECT.