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

时间:2016-07-09 14:48:47

标签: qmake

我正在尝试将一个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 个答案:

答案 0 :(得分:1)

经过一些小试验后,我发现它的效果非常好。您可以将.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/