CMake:如何在安装后链接(ln)其他名称?

时间:2014-11-17 18:26:45

标签: cmake

我需要找到一种方法,在安装后将其他名称链接到已安装的可执行文件。

下面的例子很接近,除了两个问题。一,链接是在每个目标之后完成的,而不仅仅是安装。二,链接是在构建目录中创建的,而不是在安装目录中创建的(我可以添加必要的路径来执行此操作,但如果在安装之前完成,则会出错。)

cmake_minimum_required(VERSION 2.8.4)
add_executable(gr gr.c)
install(TARGETS gr DESTINATION bin)
add_custom_command(
  TARGET gr
  POST_BUILD
  COMMAND ln;-f;gr;grm
  COMMAND ln;-f;gr;grs
  COMMAND ln;-f;gr;grh
)

做我想做的简单,干净的方式是什么?

如果不清楚,Makefile等效项为:

gr:  gr.c
    cc -o gr gr.c

install:
    install gr ${BINDIR}
    ln -f ${BINDIR}/gr ${BINDIR}/grm
    ln -f ${BINDIR}/gr ${BINDIR}/grs
    ln -f ${BINDIR}/gr ${BINDIR}/grh

1 个答案:

答案 0 :(得分:4)

我在类似情况下所做的是使用类似于您所做的自定义命令,但添加额外的install命令以在目标旁边的最终bin目录中安装链接。所以在add_custom_command

之后
install(
  FILES
    ${CMAKE_CURRENT_BINARY_DIR}/grm
    ${CMAKE_CURRENT_BINARY_DIR}/grs
    ${CMAKE_CURRENT_BINARY_DIR}/grh
  DESTINATION bin
)

当然,如果您将链接更改为符号链接(ln -s),这可能只会达到预期效果。