QT의 QMake에 대한 라이브러리 파일 종속성을 어떻게 지정합니까?
-
13-09-2019 - |
문제
Somelib.Pro 파일이 포함되어 있습니다.
CONFIG += debug
TEMPLATE = lib
TARGET = SomeLib
..
그런 다음 종속 SomeApp.pro에서 :
..
debug:LIBS += -lSomeLib_debug
..
Qmake에서 Somelib를 만지면 Someapp가 어떻게 건설하도록 강요 할 수 있습니까?
해결책
정확한 라이브러리 파일 이름을 제공해야하기 때문에 추악하지만 다음과 같습니다.
TargetDeps += libfoo.a
다른 팁
QT Creator는 도서관을 포함 해야하는 프로젝트의 상황에 맞는 메뉴에서 "라이브러리 추가 ..."를 클릭하면 작업을 수행합니다.
이 변수는 자동으로 구성됩니다.
- 리브스
- 포함
- 종속
- pre_targetDeps
또한보십시오 http://doc.qt.digia.com/qtcreator-2.1/creator-project-qmake-libraries.html
Zahir의 의견에 대한 답변으로, Qmake 파일에서 이러한 종속성을 명시하는 것이 DLL을 사용하는 경우 불필요하다는 것을 지적 할 가치가 있지만 필수적인 exe가 정적 라이브러리에 의존하는 경우.
qmake
이 능력을 제공하지 않습니다.
대신, 앱과 lib를 하위 디렉터에 넣은 다음 부모 디렉토리에 다음과 같은 모습을 만드는 MakeFile을 만듭니다.
all: FRC
cd Somelib && qmake && $(MAKE)
cd SomeApp && qmake && $(MAKE)
FRC:
그런 다음 항상 실행됩니다 make
이 디렉토리에서.
나는 사용했다 :
POST_TARGETDEPS += c:/open-en/lib/win32mingw/libosal_based.a
작동하지만 모든 운영 체제/컴파일러마다 다른 라이브러리로의 전체 경로를 지정해야하므로 서투른 것입니다.
확실히 가능할 수는 없습니다. Qmake를 사용하여 역 종속성 조회를 수행하는 것에 대해 이야기하고 있습니까? 그래서 당신이 원하는 것은 라이브러리 A를 변경 한 후 앱 B (및 라이브러리 A에 의존하는 다른 앱)를 구축하는 것입니다.
vbrun300.dll이 업데이트 된 경우 모든 시각적 기본 앱을 다시 컴파일하는 것과 비슷합니까?