Повторное использование собственного make-файла для статической библиотеки с помощью cmake
Я предполагаю, что это будет общий вопрос о включении библиотек с существующими make-файлами в cmake; но вот мой контекст -
Я пытаюсь включитьscintilla
в другом проекте CMake, и у меня есть следующая проблема:
В Linux scintilla имеет make-файл в (скажем)${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
каталог; если вы бежитеmake
в этом каталоге (как обычно), вы получите${CMAKE_CURRENT_SOURCE_DIR}/scintilla/bin/scintilla.a
файл - который (я думаю) является статической библиотекой.
Теперь, если я попытаюсь использовать cmakeADD_LIBRARY
Мне бы пришлось вручную указать источники сцинтиллы в 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 узнает ...
Еще один связанный:cmake - добавление пользовательской команды с именем файла в качестве цели - переполнение стека; тем не менее, он специально создает исполняемый файл из исходных файлов (чего я хотел избежать) ..