3 ŞUBAT 2009, Salı
Makefile fonksiyonları
Tekrarlanan bir sürü şey, örneğin bir Makefile yazıyorum
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
TARGET=$@ LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
burada hedef 'sis' tanımlanır, değişken 'UNAME' tanımlı (ve genellikle Linux, ama belki de özellik listesi veya OSF1) ve değişken difort' ve 'err_arch' da tanımlanmış. Bu kod bloğu farklı bir derleyici hedefler için pek çok kez kullanılır (adı Kongre kullanıyor ''). Bu gereksiz kod çok büyük bir miktar olduğundan, daha basit bir şekilde yazmak istiyorum. E. g., Böyle bir şey yapmak istiyorum:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
derleme bir işlev kodu yukarıdaki tartışmalarla yapıyor olabilir. Herkes bunu başarmak nasıl herhangi bir fikir var mı?
CEVAP
3 ŞUBAT 2009, Salı
call
function arıyoruz.
compile = \
if [ $(UNAME) = $(1) ]; then \
$(MAKE) FC=$(2) FFLAGS=$(3) PETSC_FFLAGS="..." \
TARGET=$@ LEXT="$(4)_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
debug_ifort_Linux:
$(call compile,Linux,ifort,$(difort),ifort)
Eğer varsa make
sh
's. yerine conditionals kullandığını görmek gerekir ama Makefile
biraz yeniden yapılandırılması, eğer
Bunu Paylaş:
Arama HEREDOC dize içinde PHP fonksiyo...
C# bir Sözlükte Mağaza fonksiyonları...
Neden pthreads’ durumu değişken fonksi...
::standart bir dize uzunluğu() ve size...
Scala listesi's "sihirli&quo...