31

我有一个现有的项目 ( wvdial),它有一个工作的 makefile。我正在尝试将它集成到我们使用 CMake 的主要构建过程中。谁能建议如何做到这一点?我根据我们构建的其他一些项目在下面进行了尝试,但从未调用过 makefile。我要做的就是调用 wvdial 的 makefile 并将二进制文件包含在.deb我们构建的包中。

    cmake_minimum_required(版本 2.6)

    SET(COMPONENT_NAME 根-供应商-wvdial)

    设置(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})

    添加_自定义_目标(
        wvdial 全部
        取决于 ${WVDIAL_INSTALLED}
    )

    IF (${ROOTS_TARGET_ARCHITECTURE} STREQUAL "armhf")
       SET(TARGET_FLAG "--host=arm-linux-gnueabihf")
    万一()

    添加自定义命令(
        WORKING_DIRECTORY ${WVDIAL_BINARY_DIR}
        输出 ${WVDIAL_INSTALLED}
        命令环境 CXXFLAGS=${ROOTS_COMPILER_FLAGS} ./configure ${TARGET_FLAG} ${ROOTS_HOST_OPTION}
        命令使
        评论“建设wvdial”
        逐字
    )


    安装(
        文件 ${CMAKE_CURRENT_BINARY_DIR}/wvdial
        目的地 usr/local/bin
        组件 ${COMPONENT_NAME}
        权限 OWNER_EXECUTE OWNER_READ OWNER_WRITE GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
    )

    DEFINE_DEBIAN_PACKAGE(
        名称 ${COMPONENT_NAME}
        CONTROL_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/debian/control
        CHANGELOG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/debian/changelog
    )
4

1 回答 1

30

看一下ExternalProject模块。

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

于 2013-08-21T08:32:09.430 回答