2016-06-16 9 views
1

Qt가 & 인 초보자입니다. qmake가 .pro 파일에서 제공하는 프레임 워크에 대한 감사를 시작했습니다. 제 질문의 주요 목적은 qmake 변수 "LIBS"& "PRE_TARGETDEPS"와 라이브러리의 정적 링크 간의 차이를 자세히 이해하는 것입니다.Qt의 .pro 파일에서 LIBS 대 PRE_TARGETDEPS

My Qt App은 의존하는 C++ 정적 라이브러리를 사용합니다. 다시 말하지만 정적 라이브러리는 상호 의존성을 가지고 있습니다. 각 도서관은 건물의 qmake 방식을 지원하기 위해 .pro 파일을 포함하고 있습니다. 물론이 앱에는 .pro 파일도 있습니다.

이제 정적 라이브러리에서 libStaticA가 libStaticB에 종속되어 있고 둘 다 C++ 라이브러리 인 경우 둘 다 각각 .pro 파일을 가지고 있습니다. 아래와 같이 libStaticA.pro의 종속성을 + LIBS & -l으로 언급하는 것으로 충분합니까? + LIBS + = -L/path_To_libStaticB/-llibStaticB

아니면 충분히 아래와 같이 PRE_TARGETDEPS와 종속성을 언급하는 것입니다 + PRE_TARGETDEPS + = /path_To_libStaticB/libStaticB.a

아니면 둘 다 언급해야한다? + PRE_TARGETDEPS + = /path_To_libStaticB/libStaticB.a + LIBS + = /path_To_libStaticB/libStaticB.a

LIBS & PRE_TARGETDEPS의 관련성은 무엇인가

?

추신 : 내 개발 시스템은 osx입니다. 어떤 설명은 여기

답변

3

LIBS 내 이해를 명확히하기 위해 미리 감사드립니다 :

도서관의 목록을 지정은 프로젝트에 링크합니다. Unix -l (라이브러리) 및 -L (라이브러리 경로) 플래그를 사용하면 qmake가 Windows에서 라이브러리를 올바르게 처리합니다 (즉, 라이브러리의 전체 경로를 링커에 전달합니다). 라이브러리는 qmake가 -l lib가있는 디렉토리를 찾기 위해 존재해야합니다.

PRE_TARGETDEPS : 대상에 따라

목록 라이브러리. Visual Studio 및 Xcode 프로젝트 파일의 생성자와 같은 일부 백엔드는이 변수를 지원하지 않습니다. 일반적으로이 변수는이 빌드 도구에서 내부적으로 지원되며 종속 정적 라이브러리를 명시 적으로 나열하는 데 유용합니다.

Qt는 정적으로 링크 된 라이브러리의 종속성을 저장하기 위해 변수 PRE_TARGETDEPS을 사용합니다. 응용 프로그램을 빌드 할 때마다 라이브러리가 강제로 다시 링크됩니다.
이 변수를 지정하지 않은 상태에서 라이브러리를 업데이트하고 다시 작성하면 프로그램에서 이전 라이브러리를 계속 사용합니다.

귀하의 질문에 정적 라이브러리를 사용한다면 항상 (거의) 항상 LIBPRE_TARGETDEPS을 사용해야합니다.

인용구 : 재미 또한 Qmake variable reference
이 좋은 및 간단한 설명은 Adding libraries to Qt Projects

+0

감사합니다. 이것은 도움이된다. – Rubin