GNU/Linux >> Belajar Linux >  >> Linux

Kondisi Satu Baris Check In Makefile?

Saya mencoba mencapai sesuatu seperti ini:
Jika pengguna akan menjalankan make build_x version=1.0 lalu tampilkan Building version 1.0 , else (make build_x tanpa version param) tampilkan Building version latest . Tapi apa kuncinya di sini – saya perlu versi menjadi - dengan nilai default (untuk dapat menggunakannya dengan benar dengan git ). Inilah mengapa saya menggunakan variabel tambahan version_info untuk mengganti - dengan latest .

Jadi kode saya terlihat seperti ini:

build_x:
    $(eval version ?= -)        
    $(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})

    ${INFO} "Doing checkout according to version $(version_info)..."

Saya tahu bahwa mungkin ada masalah dengan kondisi ini yang diberikan kepada if .

Ada ide?

Jawaban yang Diterima:

Ini bekerja untuk saya:

version ?= -
ifeq (-,$(version))
  version_info = latest
else
  version_info = $(version)
endif

build_x:
    @echo version_info = $(version_info)

Ini menetapkan version ke - jika tidak disetel, maka isi version_info dengan tepat.

Menggunakan variabel spesifik target, dan varian satu baris:

build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
    @echo version_info = $(version_info)

Ini berfungsi sebagai berikut (lihat dokumentasi GNU Make secara keseluruhan):

  • version ?= - set version ke - jika belum disetel
  • if memeriksa argumen pertama, mengevaluasi untuk melihat apakah itu kosong atau tidak, dan diganti dengan argumen kedua jika yang pertama tidak kosong, dan yang ketiga jika
  • $(version:-=) mengevaluasi version , menggantikan - dengan string kosong (: memperkenalkan penggantian, kunci pencarian adalah teks sebelum = , penggantinya adalah teks setelah = )

Linux
  1. Cara Memeriksa Versi CentOS

  2. Cara memeriksa versi Ubuntu dari baris perintah

  3. Kondisi if/else satu baris dalam skrip shell linux

  1. Cara Memeriksa Versi Kernel di Linux di Command Line

  2. Cara memeriksa versi Redhat

  3. Periksa versi Wordpress yang digunakan

  1. Cara Memeriksa Versi PHP

  2. Cara Memeriksa Versi TensorFlow

  3. Periksa Versi AlmaLinux