2016-07-09 7 views
1

私のqmake .proファイルにINSTALLSルールを追加しようとしています。これはビルドディレクトリのプロジェクトのconfigディレクトリへのシンボリックリンクを作成します。ここで私は「余分」メンバを使用してそれを実行しようとした方法は次のとおりです。top_builddirとROOTDIRはもちろんビルドディレクトリとルートプロジェクトディレクトリへのパスですQmake INSTALLS変数 - ディレクトリへのシンボリックリンクを作成する

config.path = $$top_builddir/ 
config.files = $$rootdir/config 
config.extra = ln -sf $$config.files $$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/ 
-$(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

少し実験したところ、これは非常にうまく機能していました。 .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/ 
関連する問題