【问题标题】:CMake target to generate excutable wrapper script生成可执行包装脚本的 CMake 目标
【发布时间】:2010-10-22 11:18:43
【问题描述】:

我是 CMake 的新手,但遇到以下问题:

我有许多 C++ 模块(可执行文件),它们共同构成一个程序包。这些模块由用 Python 编写的驱动程序控制和执行。在构建/安装过程中,Python 程序需要使用配置过程(当前为 Autoconf/Automake/Libtool)设置的选项进行预处理。目前这是通过一个大致如下所示的 make 目标完成的(非常简化):

foobar: foobar.in
    sed -r 's/@USE_EXTMOD@/$(USE_EXTMOD)/' $< $@
    chmod 755 $@

在 CMake 中实现这一目标的好方法(即正确方法)是什么?我想可以使用 configure_file() 和(非便携式)execute_process() 的组合,但是有更好的方法吗?

最好的问候,乔纳斯。

【问题讨论】:

  • 备注:对于这些从模板生成的脚本,我喜欢chmod他们到555。这样可以防止我不小心编辑输出,install会设置正确的模式。
  • 这其实是个好主意!

标签: cmake


【解决方案1】:

我自己找到了一个满意的解决方案:

option (USE_EXTMOD "Use Python extension module" OFF)
option (DRIVER_DEBUG_MODE "Debug the extmod driver" OFF)

set (INST_BINDIR ${CMAKE_INSTALL_PREFIX}/bin)
configure_file(${Driver_SOURCE_DIR}/foobar.in foobar)

install(PROGRAMS ${Driver_BINARY_DIR}/foobar
    DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
    CONFIGURATIONS Release
    )

install(PROGRAMS ${Driver_BINARY_DIR}/foobar
    DESTINATION ${CMAKE_BINARY_DIR}/bin
    CONFIGURATIONS Debug
    )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多