首页 文章

Qmake INSTALLS变量 - 创建指向目录的符号链接

提问于
浏览
2

我正在尝试将一个INSTALLS规则添加到我的qmake .pro文件中,该文件将在我的项目中的config目录的build目录中创建一个符号链接 . 以下是我尝试使用'额外'成员的方法:

config.path = $$top_builddir/
config.files = $$rootdir/config
config.extra = ln -sf $$config.files $$config.path
INSTALLS += config

其中top_builddir和rootdir分别是构建目录和根项目目录的路径 .

生成的Makefile规则是:

install_config: FORCE
@test -d $(INSTALL_ROOT)/home/greg/Desktop/mg_builds/MPI-Debug || mkdir -p $(INSTALL_ROOT)/home/greg/Desktop/mg_builds/MPI-Debug
ln -sf /home/greg/Desktop/mg/config /home/greg/Desktop/mg_builds/MPI-Debug/
-$(INSTALL_DIR) /home/greg/Desktop/mg/config $(INSTALL_ROOT)/home/greg/Desktop/mg_builds/MPI-Debug/

添加了额外的命令,但是还有一个命令 cp 该目录也导致了错误:

cp: '/home/greg/Desktop/mg/config' and '/home/greg/Desktop/mg_builds/MPI-Debug/config' are the same file
Makefile:580: recipe for target 'install_config' failed

我怎么能抑制这个或告诉qmake制作符号链接而不是副本?

1 回答

  • 1

    经过一些小小的实验后,我发现它的效果非常好 . 您可以将 .files 成员留空(即 .files = )或完全省略它,并且不会在Makefile中生成复制命令 . 目标目录可以直接写入 extra 命令 . 但是,仍然需要 .path 才能生成规则 .

    config.path = $$top_builddir/
    config.extra = ln -sf $$rootdir/config $$config.path
    INSTALLS += config
    

    Makefile文件:

    install_config: FORCE
    @test -d $(INSTALL_ROOT)/home/greg/Desktop/mg_builds/MPI-Debug/ || mkdir -p $(INSTALL_ROOT)/home/greg/Desktop/mg_builds/MPI-Debug/
    ln -sf /home/greg/Desktop/mg/config /home/greg/Desktop/mg_builds/MPI-Debug/
    

相关问题