如何让CMake使用现有的Makefile?

Sea*_*abs 23 makefile cmake

我有一个现有的项目(wvdial),它有一个工作的makefile.我正在尝试将它集成到使用CMake的主要构建过程中.任何人都可以建议如何做到这一点?我在下面根据我们构建的其他一些项目进行了尝试,但是从不调用makefile.我想要做的就是调用wvdial的makefile并在我们构建的.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
    )

Com*_*sMS 25

看看ExternalProject模块.

这将为您的CMake项目添加一个虚拟目标,负责构建依赖项.该命令非常复杂,并支持很多你可能不需要的东西.Kitware(CMake背后的公司)做了一个很好的帖子,名为Building External Projects with CMake 2.8,后来解释了该命令的基本用法.