QMake : 외부 스크립트 실행 ( run external script )

qt

 

Make 파일의 문법은 일반적으로 어렵다.   그래서 QT에서는 Make 파일을 쉽게 만들어주는 자동 생성 도구로 QMake를 가지고 있다.  QMake의 문법을 이용하면 보다 용이하게 프로그램 빌드 설정을 할 수 있다.  필자는 해당 프로그램의 빌드가 완료된 후, 외부 스크립트를 실행하고 싶었다.  그래서 구글링 구글링…  StackOverflow 형들은 정말 많은 것들을 알고 있다.

다음과 같은 예약어가 있다.

  • PRE_TARGETDEPS
  • POST_TARGETDEPS
  • QMAKE_PRE_LINK
  • QMAKE_POST_LINK

 

우리는 C언어 기초 시간에 컴파일 단계를 들은 바 있다.  다시 한번 되짚어보자.

1. C코드 작성
2. Compile 단계
2.1. 컴파일 ( by compiler )
2.2. Object 파일 생성
3. Linking 단계
3.1. 외부 library 및 파일 linking ( by linker )
3.2. 실행 프로그램 생성

 

위의 예약어들은 컴파일 단계와 관련이 깊다.  먼저 PRE_TARGETDEPS , POST_TARGETDEPS 는 2. 과정인 Compile 단계를 기점으로 적용이 되고, QMAKE_PRE_LINK , QMAKE_POST_LINK 는 3. 과정인 Linking 단계를 기점으로 적용이 된다.  이를 다시 정리하면 다음과 같다

1. C코드 작성
2. PRE_TARGETDEPS
3. Compile 단계
3.1. 컴파일 ( by compiler )
3.2. Object 파일 생성
4. POST_TARGETDEPS
5.QMAKE_PRE_LINK
6. Linking 단계
6.1. 외부 library 및 파일 linking ( by linker )
6.2. 실행 프로그램 생성
7. QMAKE_POST_LINK

 


PRE_TARGETDEPS , POST_TARGETDEPS 를 사용하려면 QMAKE_EXTRA_TARGETS 예약어와 함께 사용해야 한다.  (꼭 사용을 안해도 되는지는 모르겠다. 그냥 예제에서는 다들 쓴다… )  사용 예시는 다음과 같다.

test_script.commands = my_shell_script.sh
QMAKE_EXTRA_TARGETS = test_script
PRE_TARGETDEPS = test_script
POST_TARGETDEPS = test_script

 

QMAKE_PRE_LINK , QMAKE_POST_LINK 는 사용하고 싶은 코드를 그냥 사용하면 된다.

TEST_PATH = ../../
QMAKE_POST_LINK += cp $${TEST_PATH}/test_script.sh

 

여기서 변수 선언과 같은 사용법을 알아보자. 이것도 StackOverflow 형님이 알려주셨다.

  • VAR = foobar
    • Assign value to variable when qmake is run
  • $$VAR
    • QMake variable’s value at the time qmake is run
  • $${VAR}
    • QMake variable’s value at the time qmake is run (identical but enclosed to separate from surrounding text)
  • $(VAR)
    • Contents of an Environment variable at the time Makefile (not qmake) is run
  • $$(VAR)
    • Contents of an Environment variable at the time qmake (not Makefile) is run

 

 

 


Reference.

http://www.qt.io/

http://doc.qt.io/qt-5/qmake-advanced-usage.html

http://stackoverflow.com/questions/7754218/qmake-add-a-variable-into-the-pro-file