【make】Makefile内の記述をWindowsとLinux両対応にする

 Makefile は make コマンドで実行できるビルド定義です。おおよそコマンドの羅列をして使います。例えば次です。

# https://github.com/ucan-lab/docker-laravel/blob/main/Makefile
#  ucan-lab/docker-laravel から引用。

up:
	docker compose up -d
init:
	docker compose up -d --build
	docker compose exec app composer install
	docker compose exec app cp .env.example .env
	docker compose exec app php artisan key:generate
	docker compose exec app php artisan storage:link
	docker compose exec app chmod -R 777 storage bootstrap/cache

 例の様に Windows でも Linux でも使えるコマンドならば問題にならないのですが、cp と COPY など Windows と OS によって異なるコマンドがあります。Windows ならば WSL を使いたいといったこともあります。このため1つの Makefile 内の1つのブロック内で Windows と Linux に両対応するための分岐を仕込みたくなります。これは次でできます。

# Linux コマンドの cp をデフォルトを変数に格納
COPY = cp
ifeq ($(OS),Windows_NT)
    # もし Windows ならば copy を変数に格納
    COPY = copy
endif

install:
	# OS に応じたコピーコマンドが実行される
	$(COPY) .env.example .env

 あらかじめ使用するコマンドについて一通り分岐内で両対応する同じインターフェースのコマンドを定義しておきます。こうすれば Windows でも Linux でも同じ感覚でビルド内容を定義できます

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG