2016-07-09 4 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 

, 각각.

생성 된 메이크 규칙은 다음과 같습니다

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 

메이크 :

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/ 
관련 문제