Как заставить CMake использовать существующий Makefile?
У меня есть существующий проект (wvdial), который имеет рабочий файл makefile. Я пытаюсь интегрировать его в наш основной процесс сборки, который использует CMake. Может ли кто-нибудь посоветовать, как это сделать? Я сделал попытку ниже, основываясь на некоторых других проектах, которые мы создаем, но makefile никогда не вызывается. Все, что я хочу сделать, это вызвать makefile для wvdial и включить двоичный файл в пакет .deb, который мы создаем.
Спасибо,
Шон
cmake_minimum_required(VERSION 2.6)
SET(COMPONENT_NAME roots-vendor-wvdial)
SET(DEBIAN_PACKAGE_VERSION 1.6.1)
SET(WVDIAL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
SET(WVDIAL_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET(WVDIAL_INSTALLED ${CMAKE_CURRENT_BINARY_DIR})
ADD_CUSTOM_TARGET(
wvdial ALL
DEPENDS ${WVDIAL_INSTALLED}
)
IF (${ROOTS_TARGET_ARCHITECTURE} STREQUAL "armhf")
SET(TARGET_FLAG "--host=arm-linux-gnueabihf")
ENDIF()
ADD_CUSTOM_COMMAND(
WORKING_DIRECTORY ${WVDIAL_BINARY_DIR}
OUTPUT ${WVDIAL_INSTALLED}
COMMAND env CXXFLAGS=${ROOTS_COMPILER_FLAGS} ./configure ${TARGET_FLAG} ${ROOTS_HOST_OPTION}
COMMAND make
COMMENT "Building wvdial"
VERBATIM
)
INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/wvdial
DESTINATION usr/local/bin
COMPONENT ${COMPONENT_NAME}
PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
)
DEFINE_DEBIAN_PACKAGE(
NAME ${COMPONENT_NAME}
CONTROL_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/debian/control
CHANGELOG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/debian/changelog
)
Ответы
Ответ 1
Посмотрите на модуль ExternalProject
.
Это добавит фиктивную цель в ваш проект CMake, который отвечает за построение зависимости. Команда довольно сложная и поддерживает множество вещей, которые вам, вероятно, не понадобятся в вашем случае. Kitware (компания, стоящая за CMake) сделала приятную запись под названием "Создание внешних проектов с CMake 2.8", пояснив об основном использовании этой команды.