SORU
16 Mart 2009, PAZARTESİ


Bir Makefile çok satırlı dize bir değişken oluşturmak mümkün mü

Çok satırlı bir dize (örneğin, e-posta bırakın bir duyuru vücut) makefile bir değişken oluşturmak istiyorum. gibi bir şey

ANNOUNCE_BODY="
Version $(VERSION) of $(PACKAGE_NAME) has been released

It can be downloaded from $(DOWNLOAD_URL)

etc, etc"

Ama bunu yapmak için bir yol bulmak için görünmüyor olabilir. Mümkün mü?

CEVAP
16 Mart 2009, PAZARTESİ


Evet, tanımlama, anahtar kelime, çok satırlı bir değişken bildirmek için, bu gibi kullanabilirsiniz:

define ANNOUNCE_BODY
Version $(VERSION) of $(PACKAGE_NAME) has been released.

It can be downloaded from $(DOWNLOAD_URL).

etc, etc.
endef

Zor kısmı çoklu satır değişkeni makefile dışarı geri almak. Eğer sadece belli bir şeyi kullanma "echo $(ANNOUNCE_BODY)", göreceksin sonuç Diğerleri attılar burada kabuk çalışır işlemek için ikinci ve sonraki satırları değişken olarak komutlara.

Ancak, bir ortam değişkeni olarak değişken değeri olarak-kabuk verme ve bir ortam değişkeni (bir değişken) olarak kabuğundan başvurusu yapabilirsiniz. Örneğin:

export ANNOUNCE_BODY
all:
    @echo "$$ANNOUNCE_BODY"

$$ANNOUNCE_BODY shell ortam değişkeni bir referans gösteren, daha düzenli olacak $(ANNOUNCE_BODY) kullanımı değişken referans olun. Ayrıca değişken referans tırnak kullandığınızdan emin olun, yeni satır kabuk kendisi tarafından yorumlanan değil mi emin olmak için.

Tabii ki, bu özel numara platform ve kabuk hassas olabilir. GNU bash ile Ubuntu Linux üzerinde 3.2.13; YMMV test ettim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Smith

    Bryan Smith

    12 Mart 2006
  • CMTelly

    CMTelly

    2 Mayıs 2007
  • steeletraining

    steeletraini

    28 NİSAN 2010