2015-07-24 28 views
8

göreli alt dizinleri ile Subdir qmake-proje kullanmaya çalışıyorum:Gölge alt yapıları ile gölge oluşturma nasıl kullanılır?

TEMPLATE = subdirs 
SUBDIRS = app ../lib1 
QT yaratıcısı bir diğer dizinde anlamına gelen "gölge yapı" seçeneğini kullanarak bu projeyi, oluştururken, bu dosyanın çıktısını koyar

Bu yol:

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

sorun benim altdiz görecelidir, çünkü Shadow-Build-Directory/../lib1 içinde Lib1 inşa koymak için çalışıyor, çıkış için aynı göreli yol kullanır olmasıdır!

Bundan nasıl kurtulabilirim?

Teşekkür ederiz.

DÜZENLEME: En son Qt 5.5 kullanıyorum. Yeni cevap

+0

Lib1 projesini aynı uygulama projesine koyamazsınız, bu nedenle kök proje ağacının içinde mi? – Tryum

+0

Bu kütüphaneyi kullanarak birden fazla uygulamaya (belki 10 veya daha fazla) sahip olacağım. Temiz bir dizine sahip olmak isterim. Her neyse, bu tek çözüm ise, pek çok seçeneğim olmayacak:/ –

+0

'Shadow-Build-Directory'' boş bir dizine 'lib1' klasörünün bir sorun olmaz. –

cevap

0

:() (kaynak ağacının dışında olmak belgelerinde belirtildiği gibi) hiçbir şey döndürür $$ gölgeli: bazı testler ve kök projenin dışında olmak qmake buyruğuyla için büyük bir sorun gibi görünüyor yapılmış ve aynı nedenlerle, kök proje dizinindeki .qmake.conf (belgesiz özellik) lib1 projesinde yüklenmez.

Sanırım sorunun çözümü, lib1'i bağımsız bir proje olarak tutmak, kütüphaneyi bir kez ve herkes için inşa etmektir. Daha sonra projelerinizin her birinde lib1'in ikili dosyalarına ve başlıklarına referansı ekleyin.

Hatta qmake özellikleri ile otomatik olabilir

: projelerinizin her birinde, o zaman

otomatik yapılandırmak istiyorum
CONFIG += lib1 

yolunu ve bağlantı yönergesi dahil ekleyerek, Lib1 düzgün yazılı özellik yolunu vermek senin projeler.

Eski Cevap: şu anda deneyemezmiyiz ama lib.pro dosyasında

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

size sorunu çözmek gerektiğini sanırım.

+0

Çalışmıyor, test ettim :-( –

+0

Mükemmel bir cevap olmasa bile, size cevap verdiğim için teşekkür ederim. –