Qmake INSTALLS 变量-创建符号 link 到目录

Qmake INSTALLS variable - create symbolic link to directory

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

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 创建一个符号链接而不是一个副本?

经过一些试验,我发现这个效果很好。您可以将 .files 成员留空(即 .files =)或完全省略它,并且不会在 Makefile 中生成任何复制命令。目标目录可以直接写在extra命令中。但是,生成规则仍然需要 .path

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

生成文件:

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/