Piszę plik Makefile z wieloma powtarzającymi się materiałami, np.Funkcje w Makefile
debug_ifort_Linux:
if [ $(UNAME) = Linux ]; then \
$(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS="..." \
[email protected] LEXT="ifort_$(UNAME)" -e syst; \
else \
echo $(err_arch); \
exit 1; \
fi
gdzie docelowego Syst 'jest określona, zmienna „nazwa_uż” jest zdefiniowane (i zwykle jest Linux, ale może również Cygwinem lub OSF1) a zmienne „difort” i „err_arch” są zdefiniowane . Ten blok kodu jest używany bardzo wiele razy dla różnych celów kompilatora (przy użyciu konwencji nazw ''). Ponieważ jest to ogromna ilość zbędnego kodu, chciałbym móc go napisać w prostszy sposób. Np. Chciałbym zrobić coś takiego:
debug_ifort_Linux:
compile(uname,compiler,flags,petsc_flags,target,lext)
gdzie kompilacja może być funkcją wykonującą powyższy kod na podstawie argumentów. Czy ktoś ma pojęcie, jak to osiągnąć?
Dlaczego ta opcja jest lepsza niż poprzednia odpowiedź, która jest obecnie oznaczona jako poprawna? –
Powinieneś używać zmiennych wielowierszowych zamiast \. Który znowu byłby "za dużo, żeby po prostu edytować tę odpowiedź" (o ile dotychczas otrzymałem recenzje). – JonnyJD
Wyjaśnienie zmiennych wielowierszowych jest trochę za duże na komentarz. Ale oczywiście nie musisz się zgadzać. – JonnyJD