Bỏ qua để đến nội dung

Tạo dự án (project) C++ đầu tiên

Bài này hướng dẫn tạo một dự án C++ đơn giản, hiểu quy trình biên dịch, và làm quen với cách tổ chức project bằng CLion/VS Code.

1. Quy trình biên dịch một chương trình C++

Phần tiêu đề “1. Quy trình biên dịch một chương trình C++”

Khi bạn biên dịch một file .cpp, trình biên dịch thực hiện 4 bước:

  1. Tiền xử lý (Preprocessing): Xử lý các dòng bắt đầu bằng # (như #include, #define) - chèn nội dung file header, thay thế macro…
  2. Biên dịch (Compilation): Dịch code C++ (đã tiền xử lý) thành mã hợp ngữ (assembly)
  3. Hợp dịch (Assembly): Dịch mã hợp ngữ thành mã máy (object file - .o/.obj)
  4. Liên kết (Linking): Ghép các object file và thư viện lại thành một file thực thi (executable) hoàn chỉnh
hello.cpp → [Tiền xử lý] → [Biên dịch] → [Hợp dịch] → hello.o → [Liên kết] → hello (executable)

Lệnh g++ hello.cpp -o hello thực hiện toàn bộ 4 bước này trong một lần gọi.

  1. Mở CLion → New Project
  2. Chọn C++ Executable
  3. Đặt tên project, chọn ngôn ngữ chuẩn (Language Standard) - nên chọn C++17 hoặc mới hơn
  4. CLion sẽ tự động tạo cấu trúc project với CMakeLists.txtmain.cpp

Cấu trúc project cơ bản:

my_project/
├── CMakeLists.txt # File cấu hình build (dùng CMake)
└── main.cpp # File code chính

CMakeLists.txt cơ bản trông như sau:

cmake_minimum_required(VERSION 3.20)
project(my_project)
set(CMAKE_CXX_STANDARD 17)
add_executable(my_project main.cpp)
  1. Tạo thư mục project, mở bằng VS Code
  2. Tạo file main.cpp
  3. Cài extension C/C++ của Microsoft nếu chưa có
  4. Nhấn Ctrl+Shift+B (hoặc Cmd+Shift+B trên Mac) để build, hoặc dùng terminal tích hợp:
Terminal window
g++ main.cpp -o main -std=c++17
./main
  • -std=c++17: chỉ định chuẩn C++ sử dụng (C++11, C++14, C++17, C++20…)

4. Cấu trúc một chương trình C++ cơ bản

Phần tiêu đề “4. Cấu trúc một chương trình C++ cơ bản”
#include <iostream> // Thư viện chuẩn để xuất/nhập dữ liệu (cin, cout)
int main() { // Hàm main - điểm bắt đầu thực thi của mọi chương trình C++
std::cout << "Xin chao, C++!" << std::endl;
return 0; // Trả về 0 nghĩa là chương trình chạy thành công
}
  • Mọi chương trình C++ đều phải có đúng một hàm main() - đây là nơi chương trình bắt đầu chạy.
  • #include <iostream> nhập vào thư viện chuẩn để dùng std::cout (xuất dữ liệu) và std::cin (nhập dữ liệu).
  • return 0; báo cho hệ điều hành biết chương trình kết thúc bình thường (không có lỗi).

Khi project lớn dần, bạn sẽ tách code ra nhiều file .cpp.h (header). Ví dụ:

my_project/
├── main.cpp
├── math_utils.h
└── math_utils.cpp

Biên dịch nhiều file cùng lúc:

Terminal window
g++ main.cpp math_utils.cpp -o my_project -std=c++17

Chúng ta sẽ tìm hiểu chi tiết cách tổ chức code với header file và nhiều file .cpp ở bài “Header file và Namespace” trong phần Ngôn ngữ C++.