Biến và đối số Makefile: Hướng dẫn toàn diện

Bien Va Doi So Makefile Huong Dan Toan Dien



Một tệp văn bản được gọi là 'makefile' được sử dụng để lưu trữ các lệnh tạo dự án phần mềm. Nó tự động liên kết, thiết lập và biên dịch mã gốc của dự án bằng cách sử dụng tệp đích. Một tệp makefile được sử dụng để tạo các tệp đối tượng và mục tiêu từ tệp mã nguồn. Khi thực thi tệp đích, mã trong tệp mã nguồn sẽ được thực thi và dự án của bạn sẽ chạy ngay lập tức. Trong hướng dẫn này, chúng tôi sẽ cung cấp cho bạn thông tin chi tiết toàn diện về cách tạo tệp thực hiện bằng cách sử dụng các biến và đối số.

Một makefile cơ bản bao gồm ba phần:







  • Các biến được gắn nhãn thực thể để lưu trữ dữ liệu liên quan đến dự án.
  • Các quy tắc chỉ định cách tạo một tệp dự định bằng cách sử dụng các phần phụ thuộc trong tệp tạo tệp.
  • Các tài liệu mà makefile được thiết kế để tạo ra được gọi là target.

Biến Makefile

Như chúng tôi đã mô tả, một đối tượng được gắn nhãn có thể được sử dụng để lưu trữ dữ liệu được gọi là biến makefile. Giá trị của biến có thể là một ký tự đơn, một giá trị số hoặc một tập hợp các giá trị. Tiêu đề của tài liệu nguồn và đích cũng như các hướng dẫn được sử dụng để tạo đích đều là dữ liệu liên quan đến quy trình xây dựng được lưu trữ trong các biến.



Tạo các biến Makefile

Để xác định một biến đơn giản trong makefile, chúng ta nên bắt đầu nó bằng một tiêu đề đơn giản, theo sau là dấu “=” và giá trị sẽ được lưu trong đó:



tên_of_variable = value_of_variable





Mặt khác, bạn nên thử “:=” thay vì “=” để dự án được thực hiện nhanh chóng và tốt nhất.

name_of_variable := value_of_variable



Ví dụ: chúng tôi tạo một tệp tạo tệp cho dự án C và khai báo biến “CC”. Biến này lưu trữ trình biên dịch có thể thực thi được cho C, tức là “gcc”, dưới dạng một giá trị. Ở dòng thứ tư, chúng ta tạo biến “CFLAGS” được sử dụng để đưa ra cảnh báo trong khi quá trình biên dịch đang diễn ra. Điều này nhằm nâng cao khả năng tối ưu hóa dự án mà bạn đang chạy và để tránh mọi vấn đề.

Tương tự như vậy, biến “TARGET” trong đoạn mã này được sử dụng để đặt tệp mục tiêu mới được tạo sau khi thực thi tệp tạo tệp. Trong khi tạo tệp tạo, cần phải đặt tệp nguồn và tệp đối tượng sau khi đặt tệp đích. Các tệp nguồn và đối tượng cũng có thể được xác định bằng cách sử dụng các biến. Bạn có thể đặt tên cho các biến này theo sự lựa chọn của bạn.

Ví dụ: biến SRCS đặt tệp nguồn trong khi biến OBJS đặt tệp đối tượng mới bằng biến SRCS.

CC = gcc
CFLAGS = -Tường
MỤC TIÊU = Mới
SRCS = main.c
OBJS = $ ( SRCS:.c=.o )

Sử dụng các biến Makefile

Sau khi khai báo hoặc xác định các biến makefile, việc làm cho chúng có thể sử dụng được trong makefile là rất cần thiết. Để sử dụng biến makefile, bạn phải sử dụng dấu “$” theo sau là dấu ngoặc “()” hoặc “{}”. Ví dụ: chúng tôi sử dụng “$()” để xây dựng tệp thực thi đích. Sau khi thực hiện bước này, tệp mục tiêu sẽ có thể phản hồi.

tất cả: $ ( MỤC TIÊU )

Đối số Makefile

Bất cứ khi nào makefile được gọi, một giá trị sẽ được cung cấp cho nó dưới dạng tham số được gọi là “đối số”. Các đối số được sử dụng để ghi đè giá trị ban đầu của một biến có thể thay đổi hoặc để thêm nhiều chi tiết hơn vào tệp tạo tệp khi chạy. Để truyền các đối số dòng lệnh cho một biến trong tệp tạo tệp, bạn nên sử dụng từ khóa “make”, theo sau là tên biến và giá trị đối số được truyền cho nó:

làm tên_of_variable = value_of_variable

Các tham số này có thể được truy cập dưới dạng các biến thông thường trong tệp tạo tệp, tức là “Mới” là giá trị đối số của biến “MỤC TIÊU”.

MỤC TIÊU = Mới

Ví dụ: Tạo các biến và đối số

Để chứng minh việc sử dụng các biến và đối số trong makefile, chúng tôi sử dụng một ví dụ đơn giản trong C++. Chúng tôi tạo một tệp C++ mới trong Notepad++ và thêm tiêu đề “iostream” để sử dụng đầu vào và đầu ra trong một chương trình mẫu.

Hàm main() bắt đầu bằng việc khai báo biến kiểu ký tự “v”. Luồng đầu ra tiêu chuẩn là “cout” được sử dụng để hiển thị và yêu cầu người dùng nhập dữ liệu. Ngược lại, luồng đầu vào tiêu chuẩn “cin” nhận giá trị đầu vào từ người dùng trong thời gian chạy và lưu nó vào biến “v”. “Cout” tiêu chuẩn một lần nữa được sử dụng để hiển thị giá trị được người dùng thêm vào trong thời gian chạy. Câu lệnh “return 0” kết thúc việc thực hiện chương trình thành công.

#include
int chính ( ) {
char v;
std::cout << 'Nhập một giá trị:' ;
std::cin >> TRONG;
std::cout << TRONG << std::endl;
trở lại 0 ;
}

Một makefile được tạo bằng cách sử dụng một cách tiêu chuẩn. Biến đầu tiên, “CXX”, khai báo trình biên dịch được sử dụng để chạy tệp C++, tức là “g++”. Biến tiếp theo được sử dụng để đặt cờ cho trình biên dịch nhằm tránh mọi sự cố.

Bây giờ, tệp mục tiêu được đặt bằng cách sử dụng biến “MỤC TIÊU” thành “Mới”. Đây là một tập tin thực thi. Sau đó, makefile xác định tệp nguồn và tệp đối tượng của nó thông qua các biến SRCS và OBJS. Để sử dụng các biến được khai báo, chúng tôi sử dụng dấu “$” theo sau là dấu ngoặc nhọn “()” để xây dựng tệp thực thi mục tiêu, tệp đối tượng và làm sạch tệp đối tượng và tệp đích.

CXX = g++
CXXFLAGS = -std =c++ mười một -Tường
MỤC TIÊU = Mới
SRCS = main.cpp
OBJS = $ ( SRCS:.cpp=.o )
tất cả: $ ( MỤC TIÊU )
$ ( MỤC TIÊU ) : $ ( OBJS )
$ ( CXX ) $ ( CXXCỜ ) -O $ ( MỤC TIÊU ) $ ( OBJS )
% .O: % .cpp
$ ( CXX ) $ ( CXXCỜ ) -c $ < -O $ @
lau dọn:
rm -f $ ( MỤC TIÊU ) $ ( OBJS )

Sau khi lưu C++ và tệp tạo tệp của nó, hãy khởi chạy CMD của hệ thống, điều hướng vào thư mục làm việc và chạy lệnh tạo như sau. Nó tạo ra tệp đối tượng “main.o” và tệp mục tiêu “New.exe” cho tệp mã nguồn. Hiện tại, chúng tôi chưa thông qua bất kỳ đối số nào để đưa ra hướng dẫn.

làm

Chạy tệp mục tiêu sẽ yêu cầu người dùng nhập liệu. Chúng ta thêm ký tự “h” ở lần thực hiện đầu tiên và “haha” ở lần thực hiện thứ hai. Trong khi biến “v” chỉ chấp nhận các giá trị “ký tự”, ký tự “h” từ chuỗi “haha” được lưu trữ và hiển thị.

Mới.exe

Hãy chạy lệnh make bằng cách sử dụng các đối số dòng lệnh được truyền cho các biến makefile. Vì vậy, chúng tôi thay đổi giá trị biến “MỤC TIÊU” và chuyển “Kiểm tra” cho nó. Sau đó, tệp “Test.exe” được tạo và hoạt động chính xác như tệp “New.exe”.

làm MỤC TIÊU =Kiểm tra
Kiểm tra.exe

Phần kết luận

Trong hướng dẫn toàn diện này, chúng tôi đã xem xét từng nội dung của makefile. Chúng tôi đã trình bày chi tiết về cách khai báo các biến trong tệp tạo tệp, cách làm cho chúng có thể sử dụng được và cách thay đổi giá trị của chúng trong thời gian chạy với sự trợ giúp của các đối số. Để hỗ trợ cho lời giải thích của chúng tôi, chúng tôi đã thảo luận về một ví dụ đơn giản trong C++.