Повторное использование пользовательского make-файла для статической библиотеки с cmake

Думаю, это будет общий вопрос о включении библиотек в существующие make-файлы в cmake; но вот мой контекст -

Я пытаюсь включить scintilla в другой проект CMake, и у меня возникает следующая проблема:

В Linux scintilla имеет make-файл (скажем) в ] Каталог $ {CMAKE_CURRENT_SOURCE_DIR} / scintilla / gtk ; если вы запустите make в этом каталоге (как обычно), вы получите файл $ {CMAKE_CURRENT_SOURCE_DIR} /scintilla/bin/scintilla.a , который (я полагаю) является статической библиотекой .

Теперь, если бы я попытался использовать cmake ADD_LIBRARY , мне пришлось бы вручную указать источники scintilla в cmake - и я бы не стал с этим связываться, поскольку у меня уже есть makefile. Поэтому я лучше назову обычный scintilla make - а затем проинструктирую CMAKE каким-то образом ссылаться на полученный scintilla.a . ( Я предполагаю, что тогда это не обеспечит кроссплатформенную совместимость, но обратите внимание, что в настоящее время кроссплатформенность для меня не проблема; я просто хотел бы создать scintilla как часть этого проекта который уже использует 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)

Я, очевидно, цитирую новичка с cmake - так возможно ли вообще иметь cmake запустить уже существующий make-файл и "захватить" его выходной файл библиотеки, чтобы другие компоненты проекта cmake могли связываться с ним?

Большое спасибо за любые ответы,
Ура!

РЕДАКТИРОВАТЬ: возможное дублирование: CMake: как мне зависеть от вывода настраиваемой цели? - Переполнение стека - однако здесь поломка, похоже, связана с необходимостью иметь специальную библиотеку , которую остальная часть проекта cmake распознала бы ...

5
задан Community 23 May 2017 в 10:29
поделиться