2012-10-29 15 views
7

Bir Qt projesi oluşturan bir kümeye ait dosyalar ve içermeyen diğer dosyaları içeren bir dizinim var. Yani, A.cxx, ADriver.cxx ve A.ui dosyaları, Qt seçenekleri ile derlenmesi gereken bir kümeye aittir. Sonra qt olmayan bir dosya B.cxx var. Sonra C.cxx, CDriver ve C.ui başka bir Qt kümesidir. Bunlardan onlarca var, bu yüzden her add_executable elle yazmak yerine glob kullanmak istiyorum. Ben (yukarıdaki döngüde kullanılmıyor) "kalır" non-Qt, ve kendileri tarafından derlenen gerektiğiniBir kümeden dosyaları kaldırma

for(all ui files) 
    create an executable from the ui and its matching .cxx and *Driver.cxx" 
end 

gibi bir şey yapmanın Sonra tüm cxx dosyaları düşünüyordum. Sorum şu: "set" dosyasından dosyaları "çıkarmak". Yani, yukarıda açıklanan yöntemi kullanmak için, tüm cxx dosyalarını bir gruba sahip olmalı ve .ui dosya döngüsünde kullanılanları kaldırmam gerekir. Mümkün mü? Böyle bir şey yapmak için daha iyi bir yolu var mı?

cevap

8

İlk olarak bir topak ile tüm dosyaları toplamak:

file(GLOB UIS *.ui) 

foreach(ui ${UIS}) 
get_filename_component(f ${ui} NAME_WE) 

# Do Qt stuff 
qt4_wrap_ui(${f}uis ${ui}) 
qt4_wrap_cpp(${f}srcs ${f}.cpp ${f}Driver.cpp) 
add_executable(${f} ${f}uis ${f}srcs) 

list(REMOVE_ITEM ALL_SRCS ${ui} ${f}.cpp ${f}Driver.cpp) 
endforeach() 

sonra:

file(GLOB ALL_SRCS *) 

Sonra aynı anda ALL_SRCS listeden substracting, ui dosyaları seçmek ve onlar için Qt hedefleri oluşturmak Bu, ALL_SRCS'da tüm qt olmayan kaynaklara sahip olacaksınız.

+0

@arrowdodget Ah, REMOVE_ITEM'in tam aradığım şey olduğunu düşünüyorum. Bir kez verdiğimde, cevabı kabul edeceğim - teşekkürler! –

İlgili konular