Думаю, это будет общий вопрос о включении библиотек в существующие 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 распознала бы ...