2014-03-02 3 views
1

다른 빌드 자동화 도구를 만들고 있지만 qmake가 생성 한 makefile에 있기 때문에 finale 변수 내용을 가져와야합니다.하지만 모두 생성하지는 않습니다. 메이크 파일 ... 예를 들어 다른 템플릿을 만들거나 qmake를 쿼리하여 ... 포함, 링크 등을 얻는 방법이 있습니까?Qt 프로젝트에 필요한 모든 include 경로, lib 등 가져 오기

(상관없이 출력 형식, 난 그냥 빠른 방법의 경로를 원하는)

PS : 나는 이미 qmake를 변수에 메시지()를 사용하려고했으나 한 그것을 아웃 빈 문자열

+0

[CMake] (https://qt-project.org/quarterly/view/using_cmake_to_build_qt_projects)를보십시오. 프로젝트를보다 효율적으로 제어 할 수 있습니다. – yegorich

답변

3

명령 줄 qmake -query의 출력을 보았습니까 ...? 내 시스템에서

은 (명확성을 위해 출력의 대부분을 제거) 제공합니다 이전 버전의

~ sez$ env PATH=$HOME/build/qt5/qtbase/bin qmake -query 
QT_SYSROOT: 
QT_INSTALL_PREFIX:/usr/local/Qt-5.2.0 
QT_INSTALL_DATA:/usr/local/Qt-5.2.0 
QT_INSTALL_HEADERS:/usr/local/Qt-5.2.0/include 
QT_INSTALL_LIBS:/usr/local/Qt-5.2.0/lib 
QMAKE_SPEC:macx-clang 
QMAKE_VERSION:3.0 
QT_VERSION:5.2.0 

그것 덜 장황. 다음과 같이 개별 변수를 쿼리 할 수 ​​있습니다.

~ sez$ env PATH=$HOME/build/qt5/qtbase/bin qmake -query QT_INSTALL_HEADERS 
/usr/local/Qt-5.2.0/include 

이렇게하면 필요한 작업을 수행 할 수 있습니까? Qt가 빌드 될 때 make install에 의해 파일이 설치된 위치를보고한다는 점에 유의하십시오. 즉, Qt를 빌드했지만 "make install"을 실행하지 않으면 qmake -query의 결과가 유용한 대답을 제공하지 못합니다.

소스에서 빌드 한 다음 해당 빌드 디렉토리에서 사용하려면 ./configure -prefix=$PWD을 실행 한 다음 make install을 실행해야합니다.

편집 :

내 qmake를 중 하나가 메이크 파일 생성을 위해 나는이 -

INCPATH = -I/usr/지방/Qt를-5.2.0/mkspecs/macx-그 소리의 -I/사용자/sez/depot/plistinator/src -I/usr/local/Qt-5.2.0/lib/QtWidgets.framework/Versions/5/Headers -I/usr/local/Qt-5.2.0/lib/QtXml.framework/버전/5/헤더 -I/usr/local/Qt-5.2.0/lib/QtGui.framework/버전/5/헤더 -I/usr/local/Qt-5.2.0/lib/QtCore.framework/Versions/5/헤더 -I. -I/Applications/Xcode.app/Contents/개발자/플랫폼/MacOSX.platform/개발자/SDKs/MacOSX10.9.sdk/시스템/라이브러리/프레임 워크/OpenGL.framework/Versions/A/Headers -I/Applications/Xcode .app/Contents/Developer/Platforms/MacOSX.platform/개발자/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -나는. -F/usr/지방/Qt를-5.2.0/lib에 Qt를 모듈은 예를 들어 지정되어있는

이 의존은

QT += widgets xml 

정보는 어떤 환경을 사용하여 위 INCPATH를 재구성 할 수 있음을 감안할 때 의 자동화 다시, 수 있습니다 하나의 bash 쉘의 표현 부분에 대한 예 '

XML_INC=$(qmake -query QT_INSTALL_LIBS)/QtXml.framework/Versions/5/Headers 

mkspecs 당신이 할 수있는 등 얻으려면

MKSPEC_INC=$(qmake -query QT_INSTALL_PREFIX)/mkspecs/$(qmake -query QMAKE_SPEC) 

SDK의 GL 경로는 항상 Qt에 포함되므로 gcc -v의 출력을 캡처하여 구성 할 수 있습니다.

그런 다음 모든 * _INC vars를 최종 결과로 결합하십시오.

이 스크립트의 전체 내용은이 답변의 범위를 벗어나지 만이 방법을 사용하면 도움이 될 것이라고 생각합니다. 나는 실제로 Makefile을 생성하지 않고 원하는 것을 쉽게 할 수있는 방법을 생각할 수 없다.

+0

그것은 Qt의 설치 경로를 얻는 것을 허락하며, 나는 각 모듈의 include와 lib 경로를 추론 할 수 있다고 생각한다. 하지만 생성 된 메이크 파일의 INCPATH를 생성하지 않고 ID를 얻으려면 –

+0

당신이 언급 한 INCPATH 요구 사항을 해결하기 위해 필자의 대답을 편집했습니다. – Sez

+0

그게 내가 한 덕분에 :) Qt는 모듈 이름에서 include 및 libs를 쉽게 검색 할 수 있도록 귀여운 이름 규칙을 사용합니다. 단지 Qt 버전을 관리 할 수 ​​있습니다. 또한 pkg-config는 내 스크립트에서 사용할 수있는 libs에 대한 유용한 정보를 제공합니다. 내 스크립트를 보려면 https://gitorious.org/yabat/yabat/를 참조하십시오. –

관련 문제