GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana fungsi eval dapat digunakan di makefile?

Cara termudah untuk memahaminya adalah mengganti eval dengan info:

$(info $(call func, foo, 1.c))

Itu akan menampilkan sebagai output hasil ekspansi pertama, sehingga Anda dapat melihat make apa yang sebenarnya akan diuraikan. Anda tidak memberikan nilai untuk variabel OBJPATH, tetapi jika itu adalah obj misalnya, dalam kasus Anda, perluasan pertama (dari fungsi panggilan) menghasilkan:

tmp = obj/foo
objs += $(tmp)
$(tmp) : 1.c
    gcc $^ -o [email protected]

Kemudian make parser akan mengevaluasi ini, dan dalam prosesnya akan mengembangkannya lagi, jadi hal-hal seperti $(tmp) diperluas.


Ini menjadi masalah bagi saya, tetapi saya menemukan solusi yang bagus. Dalam kasus saya, ini terkait dengan login buruh pelabuhan AWS. Saya memiliki skrip shell saya sebelumnya:

eval $(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)

tetapi saat memasukkannya ke dalam Makefile itu tidak berhasil. Solusi untuk ini adalah mengubah baris menjadi:

$$(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)


Linux
  1. Bagaimana seharusnya strace digunakan?

  2. Bagaimana saya bisa menghubungkan file di Linux?

  3. Bagaimana saya bisa menjalankan fungsi dari skrip di baris perintah?

  1. C++11:Bagaimana cara membuat alias suatu fungsi?

  2. Cara memasukkan pustaka statis di makefile

  3. Bagaimana cara mendapatkan status keluar dari perintah Shell yang digunakan di GNU Makefile?

  1. Bagaimana Menunda Ekspansi Variabel?

  2. Bagaimana saya bisa mengamati bandwidth memori?

  3. Bagaimana saya bisa menghentikan ZooKeeper di Ubuntu?