2017-02-16 1 views
1

나는 완전히 철저히 조사했지만 디렉토리 안에 모든 폴더를 가져올 방법을 찾지 못했습니다. 다음 Qt 프로젝트 구조가 있습니다디렉토리 안에 .pri 파일을 모두 추가하는 방법

first/ 
    second/ 
     - second.pri 

    third/ 
     - third.pri 
    ... 
    first.pri 

모든 pri 파일을 first.pri 파일에 포함하고 싶습니다. 할 수있다

include($$PWD/second/second.pri) 
include($$PWD/third/third.pri) 
... 

그러나 문제는 미래에 많은 하위 디렉토리가 추가 될 수 있으며 모든 pri 파일을 자동으로 포함하고자하는 것입니다. 시도했습니다.

FILES = $$files($$PWD/*/*.pri) 
for(FILE, FILES) { 
    include($$FILE) 
} 

하지만 '첫 번째'폴더 안에 폴더가 없습니다. $$files documentation은 재귀 적으로 지정할 수 있지만 하위 디렉터리로는 내려 가지 않습니다. 그것을 어떻게 성취합니까?

+0

레벨이 2 개 밖에 없습니까? 또는 완전히 재귀적인 솔루션을 원하십니까? –

+0

@AdrianMaire 세 가지 수준이 있습니다. – akashrajkn

답변

1

다음 QMAKE 함수 목록 디렉토리 아래에 재귀 적으로 모든 파일 다음 list_recursively 기능에

# - Function that list all files below a directory 
defineReplace(list_recursively) { 
    FILES = $$files($$1) 
    RESULT = 
    for(var, $$list($$FILES)) { 
     exists($$var) 
     { 
      RESULT *= $$find(var, .*\.pri) 
      RESULT *= $$list_recursively($$var/*) 
     } 
    } 
    return($$RESULT) 
} 

# - Define the base directory 
DIR = $$PWD/* 

# - Test the function 
temp_dir = $$list_recursively($$DIR) 

# - Output the result 
for(var, $$list($$temp_dir)) { 
    message($$var) 
} 

, 예를 .pri를 들어, 특정 확장자를 가진 파일 만 필터링 할 수 있습니다. 프로젝트 구조에 .pri 파일 만있는 경우에도이 작업이 필요하지 않습니다.

참고 : QMake가 공백으로 올바르게 작동하지 않으므로 대개 이것을 피하는 것이 좋습니다.

수정 됨 :

.pri 파일에 대한 필터가 추가되었습니다.

+0

pri 파일 만 얻는 방법은 무엇입니까? 나는 ($$ var/*. pri)를 시도했지만 아무 것도 출력하지 않는다. – akashrajkn

+1

@akashrajkn : .pri 파일 용 필터를 추가했습니다. 희망이 도움이됩니다. –

관련 문제