Я думаю, это будет общий вопрос о включении библиотек с существующими make-файлами в cmake; но вот мой контекст -
Я пытаюсь включить scintilla
в другой проект CMake, и у меня возникает следующая проблема:
В Linux у scintilla есть make-файл в (скажем) каталоге ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
; если вы запустите make
в этом каталоге (как обычно), вы получите файл ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/bin/scintilla.a
- который (я думаю) является статической библиотекой.
Теперь, если бы я попытался использовать ADD_LIBRARY
в cmake, мне пришлось бы вручную указывать источники сцинтиллы в cmake - и я бы предпочел не связываться с этим, поскольку у меня уже есть make-файл. Итак, я бы лучше позвонил обычному сцинтилле make
- и затем дал бы команду CMAKE как-то сослаться на полученный scintilla.a
. ( Полагаю, что тогда не обеспечит кросс-платформенную совместимость - но учтите, что в настоящее время кросс-платформенность для меня не проблема; я просто хотел бы построить сцинтиллу как часть этого проекта который уже использует cmake, только в Linux )
Итак, я немного попробовал с этим:
ADD_CUSTOM_COMMAND(
OUTPUT scintilla.a
COMMAND ${CMAKE_MAKE_PROGRAM}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
COMMENT "Original scintilla makefile target" )
... но затем add_custom_command добавляет цель без вывода ; поэтому я пытаюсь использовать несколько подходов, которые все терпят неудачу (ошибки приведены как комментарий):
ADD_CUSTOM_TARGET(scintilla STATIC DEPENDS scintilla.a) # Target "scintilla" of type UTILITY may not be linked into another target.
ADD_LIBRARY(scintilla STATIC DEPENDS scintilla.a) # Cannot find source file "DEPENDS".
ADD_LIBRARY(scintilla STATIC) # You have called ADD_LIBRARY for library scintilla without any source files.
ADD_DEPENDENCIES(scintilla scintilla.a)
Я, очевидно, цитирую noob с помощью cmake - поэтому можно ли вообще cmake
запустить уже существующий make-файл и "перехватить" его файл выходной библиотеки, чтобы другие компоненты проекта cmake могли ссылка против этого?
Большое спасибо за любые ответы,
Ура!
РЕДАКТИРОВАТЬ: возможный дубликат: CMake: как мне зависеть от вывода из пользовательской цели? - Переполнение стека - однако, здесь, кажется, поломка вызвана необходимостью специально иметь библиотеку , которую остальная часть проекта cmake будет распознавать ...