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.txt và main.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 và .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++.