我正在尝试将一个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制作符号链接而不是副本?
答案 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/