2013-08-21 15 views
18

Ho un progetto esistente (wvdial) con un makefile funzionante. Sto cercando di integrarlo nel nostro processo di compilazione principale che utilizza CMake. Qualcuno può consigliare su come farlo? Ho fatto un tentativo sotto basato su alcuni degli altri progetti che costruiamo, ma il makefile non viene mai chiamato. Tutto quello che voglio fare è chiamare il makefile per wvdial e includere il binario nel pacchetto .deb che costruiamo.Come ottenere CMake per utilizzare il Makefile esistente?

Grazie, 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 
    ) 

risposta

20

Date un'occhiata al modulo ExternalProject.

Questo aggiungerà un obiettivo fittizio al progetto CMake responsabile della creazione della dipendenza. Il comando è abbastanza complesso e supporta un sacco di cose che probabilmente non ti serviranno nel tuo caso. Kitware (la società dietro CMake) ha fatto un nice post called Building External Projects with CMake 2.8 un po 'indietro spiegando l'uso di base di tale comando.

+1

Kitware ha spostato il collegamento su di te. Link aggiornato qui: https://blog.kitware.com/wp-content/uploads/2016/01/kitware_quarterly1009.pdf – Matt

+0

@Matt Grazie per la notifica, ho modificato la risposta di conseguenza. – ComicSansMS

Problemi correlati