Daha özel bir kural kullanmak için make
'u zorlayamıyorum. supposed to use the first rule it comes to olan 3.81 sürümü ile çalışıyorum, ancak bu daha özel kural başka bir kural ile oluşturulmuş bir bağımlılık bağımlı olduğunda bu işe yaramaz. İşte temel resmim:Daha özel bir kural kullanmak için zorla
#rule for the dependency of the more specific rule
%.bbl: %.tex *.bib
<build the .bbl file>
#more specific rule
some_prefix%.pdf: some_prefix%.tex some_prefix%.bbl
<build the .pdf>
#general rule
%.pdf: %.tex
<build the .pdf>
Böylece temelde .bbl
dosya ile pdf inşa etmek make
istiyorum aksi daha genel kural kullanabilirsiniz, some_prefix
eşleşirse. Ne yazık ki, .bbl
dosyasına bağımlılığı kaldırmazsam, ikinci kural asla çağrılmaz.
ben genel kurala yazarlardan ekleyerek bu çalışma elde edebilmek görünmektedir:
%.pdf: %.tex %.hack
<make the pdf with a more general rule>
%.hack: %.tex
touch [email protected]
Bu iş gibi görünüyor ve .hack
dosyalar otomatik olarak silinir, ancak adından da anlaşılacağı gibi, bu korkunç bir hack. Belirli bir kuralın kullanımını zorlamak için daha iyi bir yol olmalı gibi görünüyor.
Daha belirli bir kuralı kullanmaya nasıl zorlanabilirim? İlk önce ona yardım etmek işe yaramıyor. Sen implicit rule search algorithm çok önemli bir yanını göz ardı edilir
Bu ".bbl" kuralı doğru şekilde çalışıyor mu? Yani "some_prefix_something.tex" ve rastgele '* .bib' dosyaları var ve düzgün çalıştığı zaman 'make some_prefix_something.bbl' komutunu çalıştırabilirsiniz? -d, kuralınızı beklediğiniz gibi kullanmadığında ne yaptığının ne olduğunu söyler? –
@EtanReisner, bu ilginç: Eğer '.bbl' dosyasını ilk yaptıktan sonra' .pdf'yi çalıştırırsam çalışır. '.bbl' dosyası normalde çalıştırdıktan sonra silinir, ancak (istediğim de budur), bu yüzden ilk önce' .bbl' yi açıkça oluşturmadan çalışmaz. – Shep
Tam olarak benim yanıtımdan beklediğim şey şu: bbl dosyaları varken, önkoşul dosyası zaten mevcut olduğundan algoritmanın 5. adımı geçerlidir. Sadece dosyalar henüz mevcut değilken, bunları oluşturmak için kural zincirleme kullanmayı denemek gerekiyor. – MadScientist