2013-08-21 21 views
18

Mam istniejący projekt (wvdial), który ma działający plik makefile. Próbuję zintegrować go z naszym głównym procesem budowania, który korzysta z CMake. Czy ktoś może doradzić, jak to zrobić? Podjąłem próbę poniżej na podstawie niektórych innych projektów, które budujemy, ale plik Makefile nigdy nie jest wywoływany. Wszystko, co chcę zrobić, to wywołać makefile dla wvdial i dołączyć plik binarny do pakietu .deb, który budujemy.Jak przekonwertować CMake na istniejący plik Makefile?

Dziękuję Sean

 
    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 
    ) 

Odpowiedz

20

Spójrz na module ExternalProject.

To doda fikcyjny obiekt docelowy do projektu CMake, który jest odpowiedzialny za budowanie zależności. Polecenie jest dość skomplikowane i obsługuje wiele rzeczy, które prawdopodobnie nie będą potrzebne w twoim przypadku. Kitware (firma stojąca za CMake) zrobiła z powrotem nice post called Building External Projects with CMake 2.8 wyjaśniając podstawowe użycie tego polecenia.

+1

Kitware przeniosła ten link na ciebie. Zaktualizowany link tutaj: https://blog.kitware.com/wp-content/uploads/2016/01/kitware_quarterly1009.pdf – Matt

+0

@Matt Dzięki za powiadomienie, odpowiednio zredagowałem odpowiedź. – ComicSansMS

Powiązane problemy