2015-07-24 12 views
8

Próbuję użyć podkat QMake-projekt z względne podkatalogów:Jak używać shadow build z względnymi podkatalogami?

TEMPLATE = subdirs 
SUBDIRS = app ../lib1 

Kiedy twórca QT budować ten projekt z wykorzystaniem „shadow build”, co oznacza w innym katalogu, stawia wyjście z pliku w ten sposób:

Shadow-Build-Directory/ 
    app/ 
     main.obj 
     ... 

problemem jest to, że ponieważ mój podkat jest względne, że korzysta z tej samej ścieżki względnej dla wyjścia, starając się umieścić LIB1 budować w Shadow-Build-Directory/../lib1!

Jak mogę tego uniknąć?

Dziękuję.

EDYCJA: Korzystam z najnowszego Qt 5.5.

+0

Nie możesz umieścić projektu lib1 na tym samym poziomie projektu aplikacji, więc znajduje się on w drzewie projektu głównego? – Tryum

+0

Będę miał wiele aplikacji (może 10 lub więcej) używając tej biblioteki. Chciałbym mieć czysty katalog. W każdym razie, jeśli jest to jedyne rozwiązanie, nie będę miał wielu wyborów:/ –

+0

Możesz umieścić 'Shadow-Build-Directory' w pustym katalogu, gdzie folder' lib1' nie stanowiłby problemu. –

Odpowiedz

0

Nowa odpowiedź: Zrobiłem kilka testów, a bycie poza głównym projektem wydaje się dużym problemem dla qmake: $$ shadowed() nic nie zwraca (jak stwierdzono w dokumentacji dla bycia poza drzewem źródłowym), iz tego samego powodu, .qmake.conf (nieudokumentowana funkcja) w głównym katalogu projektu nie jest załadowana do projektu lib1.

Myślę, że rozwiązaniem problemu jest utrzymanie lib1 jako samodzielnego projektu, zbudowanie biblioteki raz na zawsze. Następnie dołącz odniesienie do plików binarnych i nagłówków biblioteki lib1 w każdym z twoich projektów.

To może być nawet zautomatyzowane z funkcji qmake: W każdym z projektów, dajesz ścieżkę swojej LIB1 poprawnie napisane funkcji, a następnie dodając

CONFIG += lib1 

automatycznie skonfigurować zawierać ścieżkę i dyrektywę link na swojej projektowanie.

Old Odpowiedź: Nie można spróbować teraz, ale myślę, że

DESTDIR = $$shadowed($$PWD)/lib1 

w lib.pro pliku powinna rozwiązać Ci problem.

+0

To nie działa, testowałem to :-( –

+0

Nawet jeśli nie jest to idealna odpowiedź, dam ci nagrodę, ponieważ odpowiedziałeś: Dziękuję :-) –