Este es mi primer intento con cmake y me gustaría tener, si es posible, algunas retroalimentaciones sobre lo que hice ya que algunos problemas persisten.Creando una biblioteca usando autotools de cmake
En el CMakeLists.txt de la carpeta de la biblioteca, creé dos objetivos de archivo MAKE: configure-antlr3c
y antlr3c
. El primer objetivo se ejecuta el script de configuración autotools, el segundo se corre el hacer ejecutable para construir la biblioteca:
# CMakeLists.txt in libantlr3c-3.1.3
add_custom_target(
configure-antlr3c
${SHELL_EXECUTABLE} configure
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
add_custom_target(
antlr3c
${MAKE}
DEPENDS configure-antlr3c
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
El problema principal es que configure-antlr3c
objetivo es siempre "fuera de fecha", por lo que siempre se ejecutará incluso si no sucedieron cambios Además, necesito necesariamente generar mis makemakers de cmake en un directorio separado (no en el directorio raíz de mi proyecto) para evitar anular el archivo Make de la biblioteca autotools ...
Alguien ha tenido este problema (crear proyectos autotools con cmake)? Y si es así, ¿cuáles han sido tus soluciones?
Gracias.
EDIT: Solución En el CMakeLists.txt raíz:
include(ExternalProject)
ExternalProject_Add(
libantlr3c
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3/configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/lib/libantlr3c-3.1.3
BUILD_COMMAND make
BUILD_IN_SOURCE 1
)
Debería agregar su solución a un bloque de Respuesta; no en la pregunta. – jww