2013-06-01 11 views
5

To wydaje się być czymś, co powinno być naprawdę proste, ale wydaje się, że nie można tego zrobić tak, jak można się było spodziewać.Qt Creator, jak dodać jeden projekt C++ do drugiego?

Mam dwa oddzielne projekty C++ otwarte w kreatorze qt i chciałbym dołączyć/kompilować do jednego projektu w drugim.

Oto mój plan:

project_a/ 
    project_a.pro 
    someheaders.h 
    somecode.cpp 
    main.cpp 

project_b/ 
    project_b.pro 
    someheaders.h 
    somecode.cpp 
    main.cpp 

Zasadniczo chcę móc zawierać pliki z project_a w projekcie b. Ustawiłem project_a na zależność w projekcie project_b, ale wydaje się to być całkowicie nieefektywne jako sposób na wykorzystanie dwóch projektów. Co ja robię?

Odpowiedz

4

W celu otwarcia & budować zarówno projektu jak jedno, użyć meta-projekt z rodzaju subdirs:

TEMPLATE = subdirs 
SUBDIRS += project_a project_b 
# Use ordered build, from first subdir (project_a) to the last (project_b): 
CONFIG += ordered 

Należy umieścić podprojektu any_name.pro do katalogu any_name i umieścić ten katalog obok meta projektu .pro plik .

Jeśli chcesz zawierać nagłówki z innego projektu, napisz project_a.pri plik, który zawiera, na przykład:

# PWD expands to directory where project_a.pri placed. 
INCLUDEPATH += $$PWD/ 
INCLUDEPATH += $$PWD/network 

Niż to ten plik do project_b.pro:

include(../project_a/project_a.pri) 

Jeśli chcesz użyć project_a jako bibliotekę, zmień ją na TEMPLATE = lib i dodaj bibliotekę za pomocą kreatora, dostępnego w menu kontekstowym, gdy otworzy się w edytorze project_b.pro.

+0

Ok, więc pierwsza część tego zadziałała. Mam projekt subdirów z dwoma projektami wewnątrz niego. Ale nadal nie mogę używać nagłówków z project_a w project_b. Dodałem plik project_a.pri do project_a, ale nadal nie mogę uzyskać dostępu do żadnego z nagłówków. –

+0

Nie jestem również pewien, jak je uwzględnić. Udało mi się je uwzględnić za pomocą '../ project_a/header.h', ale wydaje się to mniej niż eleganckie! –

+0

Przepraszam, zapomniałem o tym wspomnieć. Teraz odpowiedź została zaktualizowana. –