2010-10-03 32 views
12

Qt Creator ile üzerinde çalıştığım bir projem var ve kaynak dosyalarımı dizinlerime (çıktı) otomatik olarak eklemek için onu almaya çalışıyorum. Dosyaları proje dizininde var, ancak ek içerik dosyaları içerecek şekilde * .pro dosyasını nasıl düzenleyeceğimi bilmiyorum. (Bu mümkün mü?)Qt Creator derleme dizininde kaynak dosyaları dahil

İçerik dosyaları, çıktı dizinlerimde oldukları gibi nasıl alacaklarını bilen var mı?

DÜZENLEME:

herkes ... Ben otomatik Yapımın dizinlere bir yürütülebilir dosya olarak FFmpeg kopyalamak istediğiniz yapmaya çalışıyorum tam olarak ne bilir Sadece çok

. Bu şekilde, oluşturma çıktısı yoksa, uygulama ayıklanmadan hemen önce kopyalanır.

Temiz işlemlerin kaynakları silip temizlemesini engellemeye çalışıyorum ve bunları tekrar tekrar kopyalamaya mecbur bırakıyorum. Ayrıca ... Birden fazla bilgisayarda çalışıyorum ve SVN veya Dropbox kullanıyorum, bu yüzden yollarımı göreceli olarak tutmak istiyorum. Bir bilgisayardan diğerine geçtiğimde değişecekler.

SON CEVAP: otomatik post inşa hedefi kullanabilirsiniz yapı sonra bir dizine dosyaları kopyalamak istiyorsanız

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    #in Windows, you can use & to separate commands 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILE(S) & 
    copyfiles.commands += @call copy ..\\$${TARGET}\\ffmpeg.exe $${DESTDIR}\\ffmpeg.exe 
} 

#for Mac 
macx { 
    #commands would go here if I had them 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

cevap

11

. senin yanlısı dosyasında

: tabii ki adımları sonrası inşa fazlasını yapar bir komut/toplu dosya arayabilir

win32 { 
    copyfiles.commands = @call copy <from> <to> 
} 
macx { 
    copyfiles.commands = cp <from> <to> 
} 
QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

yerine copy <from> <to>

.

+0

ve göreli olabilir mi? Bunun bir örneği var mı? – jocull

+0

Tabii ki. Yürütülen komut, çalışma dizininize göre çalıştırılan sıradan bir kabuk komutudur. – WolfgangA

+1

Dağıtım veya paketleme zamanına kadar kaynaklara ihtiyacınız yoksa, ayrıca .pro dosyasına ek INSTALL kuralları ekleyebilirsiniz. – andref

5

Qt Resource System'a bakın.

Qt Dokümanlar mevcut

RESOURCES = application.qrc

ayrıntılı örnekler ..

kez içine eklenen .. Eğer .pro dosyasında aşağıdakileri ekleyin var projenize kaynak dosyası eklemek için Pro dosya, QT projenize ayrı bir .qrc dosyası eklenecektir ve istediğiniz simgeleri, çeviri dosyaları vb. istediğiniz kaynakları ekleyebilirsiniz,

Umarım yardımcı olur ..

+0

Bu kaynaklar çıktıya derlenmiş değil mi? Derlenmiş çıktımla aynı dizinde erişilebilir olması gereken harici işlemler (* .exe dosyaları) gibi şeylerim var. – jocull

+0

@jocull Evet, sorun şu ki, bu dosyalar kaynaklara dönüştürüldüğünde doğrudan erişilemiyor. Değiştirebilmek istediğim bir XML dosyası var. Bunu gerçekten nasıl taşınabilir bir şekilde çözdünüz? İşletim sistemi başına farklı kopyalama komutları ile mi? – ierax

+0

Evet, işte böyle yapmak zorunda kaldım. Son cevabımla düzenlediğim gibi orijinal soruyu kontrol edin. – jocull

1

Artık 2012, ve bu yöntemlerin hiçbiri benim için işe yaramıyor. Bu hatayı alıyorum:

mingw32-make[1]: Leaving directory `C:/src/GL-Texture-build-desktop-Qt_in_PATH_Debug' 
/usr/bin/sh: copy: command not found 
mingw32-make[1]: *** [copyfiles] Error 127 
mingw32-make: *** [debug] Error 2 
00:28:19: The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2. 
Error while building/deploying project GL-Texture (target: Desktop) 
When executing step 'Make' 

mesajla baktığımızda, bunu muhtemelen aracın geçişi tespit ait, sh shell kullanıyorsa görmek hayret ediyorum. Her neyse ben unix eşdeğerini kullanarak bu sorunu çözdü: Bu/QT 4.6.3 Windows 7 üzerinde olur

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILES & 
    copyfiles.commands += cp -r ../$${TARGET}/textures $${DESTDIR}/ 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

.

İlgili konular