Это моя первая попытка с cmake, и я хотел бы иметь, если возможно, некоторые отзывы о том, что я сделал, поскольку некоторые проблемы остаются.
В CMakeLists.txt из папки библиотеки я создал две цели makefile: configure-antlr3c
и antlr3c
. Первая цель запускает оболочку конфигурации autotools script, вторая запускает исполняемый файл make для сборки библиотеки:
# 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}
)
Основная проблема заключается в том, что цель configure-antlr3c
всегда "устарела", поэтому она всегда будет выполняться, даже если никаких изменений не произошло. Кроме того, мне обязательно нужно сгенерировать мои make файлы cmake в отдельном каталоге (а не в корневом каталоге моего проекта), чтобы избежать переопределения файла Makefile из autotools...
У кого-нибудь была эта проблема (создание проектов autotools с cmake)? И если да, то каковы были ваши решения?
Спасибо.
EDIT: решение В корне CMakeLists.txt:
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
)