Makefile ep.1
Pallat Anchaleechamaikorn
Posted on September 8, 2024
เนื่องจากที่ผ่านมาเวลาทำ code repo ส่วนใหญ่ก็มักจะเขียน Makefile ใส่เข้าไปด้วย เพื่ออำนวยความสะดวก และอีกเหตุผลหนึ่งคือ คำสั่งบางอย่างมันยาว ก็เลยเขียนใส่ Makefile เอาไว้ เพราะขี้เกียจไปตาม googling มาใหม่นั่นเองครับ ที่มาที่ไปของการใช้ Makefile ของผมก็เป็นเช่นนี้ และไหนๆก็ใช้บ่อยแล้ว น้องๆหลายคนอาจจะเคยเข้ามาเห็นอยู่บ้าง ใช้เป็นบ้างก็ตามๆพี่ๆไป ก็เลยคิดว่า เอามาอธิบายจริงจังให้เข้าใจกันสักยกก็น่าจะดี
โดยเนื้อหาหลักตอนนี้จะเริ่มด้วยการพาไปรู้จักวิธีใช้ตามคู่มือของ GNU make manual
รูปแบบการเขียน Makefile
target … : prerequisites …
recipe
…
…
จากที่เห็นนี้อธิบายว่า target
คือชื่อของคำสั่ง เวลาที่เราใช้คำสั่ง make ผมจะยกตัวอย่างจริงให้ดูเพื่อเทียบกันตามนี้นะ
start:
echo "Hello"
show: start
echo "Welcome to the Makefile tutorial"
ในที่นี้ target
ของเราคือคำว่า start
และ show
ซึ่งเวลาที่เราอยากจะสั่งให้มันไปทำงานที่ target ชื่อ start เราก็จะสั่งว่า make start
แบบนี้นะครับ
prerequisites
จากตัวอย่าง target show
ผมเขียนให้มันมี prerequisites เป็น start
หมายความว่า ถ้าเราสั่งคำสั่ง make show
สิ่งที่เกิดขึ้นคือ มันจะไปทำคำสั่ง make start
ให้เราก่อน เสร็จแล้วมันถึงจะมาทำตาม recipe
ที่อยู่ใน show
ต่อ
ซึ่งในที่นี้ recipe
ของทั้ง 2 target เราทำเพียงแค่สั่ง echo ให้มันแสดงข้อความออกมาง่ายๆเท่านั้น
การตั้งชื่อไฟล์ของ Makefile เราสามารถตั้งว่า Makefile
ก็ได้หรือ makefile
ก็ได้เช่นกัน แต่ส่วนตัวผมชอบตั้งว่า Makefile
มากกว่า ซึ่งถ้าอ่าน doc ก็จะแนะนำแบบเดียวกันครับ
recipe
เราได้เห็นจากตัวอย่างนะครับว่า recipe ในตัวอย่างจะเป็นแบบโคตรง่ายเลย ก็คือสั่ง echo หรือก็คือสั่งพิมพ์ข้อความออกมาให้เราเห็นง่ายๆ สิ่งสำคัญของการวาง recipe ก็มีเพียง เราจะต้องมี indent และต้องเป็น tab เท่านั้น จะมา space ไม่ได้นะ
ทีนี้เราก็จะสามารถเริ่มต้นเขียน Makefile เบื้องต้นง่ายๆเราได้แล้ว โดยเราจะเอาไปสั่งทำอะไรก็ได้ยกตัวอย่างเช่น
go:
echo "run Go program"
go run main.go
install:
echo "install nodejs dependencies"
npm install
หวังว่าจะเป็นประโยชน์นะครับ
Posted on September 8, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.