Reutilizando makefile personalizado para biblioteca estática con cmake
Supongo que esta sería una pregunta genérica sobre la inclusión de bibliotecas con archivos MAKE existentes en cmake; pero aquí está mi contexto:
Estoy tratando de incluirscintilla
en otro proyecto CMake, y tengo el siguiente problema:
En Linux, scintilla tiene un makefile en (digamos) el${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
directorio; si tu corresmake
en ese directorio (como de costumbre), obtienes un${CMAKE_CURRENT_SOURCE_DIR}/scintilla/bin/scintilla.a
archivo - que (supongo) es la biblioteca estática.
Ahora, si intentara usar cmake'sADD_LIBRARY
, Tendría que especificar manualmente las fuentes de scintilla en cmake, y prefiero no meterme con eso, dado que ya tengo un archivo MAKE. Entonces, prefiero llamar al habitual centelleomake
- y luego instruir a CMAKE para que de alguna manera se refiera a la @ resultanscintilla.a
. Supongo que esto serían garantizar la compatibilidad multiplataforma, pero tenga en cuenta que actualmente la multiplataforma no es un problema para mí; Solo me gustaría construir scintilla como parte de este proyecto que ya usa cmake, solo dentro de Linux)
Entonces, he intentado un poco con esto:
ADD_CUSTOM_COMMAND(
OUTPUT scintilla.a
COMMAND ${CMAKE_MAKE_PROGRAM}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/scintilla/gtk
COMMENT "Original scintilla makefile target" )
... pero luego, add_custom_command agrega un "target sin salida "; así que estoy intentando varios enfoques para construir sobre eso, todos los cuales fallan (errores dados como comentario):
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)
Obviamente estoy citando a un novato con cmake, entonces, ¿es posible tenercmake
ejecute un archivo MAKE preexistente y "capture" su archivo de biblioteca de salida, de modo que otros componentes del proyecto cmake puedan vincularse contra él.
Muchas gracias por cualquier respuesta,
¡Salud
EDIT: posible duplicado:CMake: ¿cómo puedo depender de la salida de un objetivo personalizado? - Desbordamiento de pil - sin embargo, aquí la rotura parece deberse a la necesidad de tener específicamente unbibliotec que el resto del proyecto cmake reconocería ...
Otro relacionado:cmake - agregando un comando personalizado con el nombre del archivo como destino - Stack Overflow; sin embargo, construye específicamente un ejecutable a partir de archivos fuente (que quería evitar) ..