2009-06-30 4 views
6

이전 질문에서 말했듯이, 나는 VC++에서 QtCreator로 Qt 프로젝트를 포팅 할 계획입니다.여러개의 libs와 하나의 exe가있는 QtCreator 프로젝트

프로젝트는 4 개의 하위 프로젝트로 구성됩니다. 그 중 3 개는 libs이고 마지막 하나는 exe입니다. 하위 프로젝트는 계층화되어 있습니다. 즉, 각 계층은 해당 계층 아래의 계층에 대해 컴파일 및 링크 종속성을 갖습니다. 나는 처음부터 QtCreator에서 하위 프로젝트의 각을 만든

root 
    lib1 
    lib2 
    lib3 
    main 

다음과 같이

파일이 구성되어 있습니다. 각 폴더에는 동일한 이름을 가진 pro 파일이 들어 있습니다 (예 : lib1 -> lib1.pro). 이 접근 방식을 사용하여 실행 파일을 링크해야하는 마지막 프로젝트를 제외한 모든 프로젝트를 빌드했습니다. 나는 수동으로 프로 파일을 편집하고 아래의 코드를 추가하여 내가 고정 링커 오류를 얻고 있었다 :

LIBS += ../path/lib1.a \ 
    ../path/lib2.a \ 
    ../path/lib3.a 

모두 괜찮습니다, 그것은 LIB2 및 LIB1에서 기호를 찾을 수 없습니다 lib3 불평 지금을 제외하고. lib2.pro 파일에 Addind LIBS가 작동하지 않습니다.

나는 QtCreator가 libs 및 실행 파일과 함께 작동하는 방식을 얻지 못한다고 생각합니다. 그러한 프로젝트를 어떻게 구성하여 올바르게 컴파일하고 링크합니까?

답변

4

더 많은 문제를 해결 한 후 GCC 툴 체인에서 링커 매개 변수의 순서가 중요하다는 것을 기억했습니다.

LIBS 항목을 뒤집는 것이 트릭을 만들었습니다.

3

당신이 대답을 찾게되어 반갑습니다. 당신은 또한 추가 할 수 있습니다 : .PRO 파일을 루트 디렉토리에

CONFIG += ordered 

을 (그것은 'SUBDIRS'프로파일에 대해서만 유효). qmake는 모든 상황에서 목록을 나열한 순서를 유지하는 Makefile을 생성합니다.

+0

예, 문서에서이 옵션을 발견했으며 현재 사용하고 있습니다. 좋은 부분은 한 번에 내 전체 프로젝트를로드 할 수 있다는 것이고, 나쁜 부분은 각 lib를 개별적으로 빌드 할 수 없다는 것입니다. :-) – rpg

관련 문제