Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Programming

/

Programming Language

readable_code::CMake - Tạo dự án C++ ưa thích

Rào cản lớn nhất đối với C++ là gì? Tôi nghĩ đó là CMake. Khi tôi mới bắt đầu sử dụng C++, CMake đã gây khó khăn cho việc xây dựng một tệp nguồn duy nhất... Chúng ta cùng nhau tiêu diệt nó nhé? Với khóa học này, bạn cũng có thể trở thành CMake Master!

(4.6) 5 đánh giá

58 học viên

  • captaindev
C/C++강좌
cmake-language
dependency
readable
C++
cmake
software-design

Dịch cái này sang tiếng Việt

  • Cú pháp cơ bản CMake

  • Cú pháp CMake hiện đại

  • Quản lý các phụ thuộc bên ngoài (dự án CMake riêng, thư viện bên thứ 3) bằng CMake

  • Xây dựng dự án C++ bằng CMake

mã có thể đọc được

cpp::build_system::module_project_with_cmake - Tạo các dự án C++ thú vị mà không phụ thuộc vào hệ điều hành/nền tảng.

Tìm hiểu về CMake, phần mềm cần thiết để tạo dự án C++!

  • CMake có khó không?

  • Tuy nhiên, trong bài giảng này, chúng ta sẽ tìm hiểu về mẫu CMake có thể sử dụng cho bất kỳ cấu hình dự án nào.

  • Tôi sẽ cho bạn biết mọi thứ tôi đã học được sau hơn 10 năm vật lộn với CMake!

Tìm hiểu về những điều này

Cú pháp cơ bản của CMake

  • Chúng tôi sẽ hướng dẫn bạn cú pháp cơ bản giúp bạn sử dụng CMake tốt hơn.

  • Hãy sử dụng CMake như một ngôn ngữ lập trình bằng cách học ngữ pháp cơ bản như biến, thông báo, hàm và câu lệnh điều khiển!

Cú pháp CMake hiện đại

  • Cũng giống như mô hình lập trình đã thay đổi từ C sang C++, CMake hiện đại hiện đang là xu hướng!

  • Khi xây dựng thư viện và tệp thực thi bằng CMake, hãy tránh sử dụng các phương pháp cũ.

Quản lý các phụ thuộc bên ngoài bằng CMake

  • Bạn vẫn đang quản lý các phần mềm phụ thuộc bên ngoài bằng cách cài đặt chúng trên PC của mình chứ?

  • Hãy quản lý các dự án CMake và các phụ thuộc bên ngoài theo cách tích hợp.

  • Bây giờ bạn có thể loại bỏ nhu cầu cài đặt các thư viện riêng biệt để xây dựng dự án của mình!

Xây dựng một dự án C++ có thể tái sử dụng bằng CMake

  • Nó chứa đựng tinh hoa của hơn 10 năm kinh nghiệm phát triển.

  • Chúng tôi cung cấp cấu trúc CMake cho phép bạn đạt được hiệu quả tối đa với những sửa đổi tối thiểu.

  • Bạn chưa bao giờ thấy một cấu trúc dự án nào như thế này phải không?!

Bạn có thể nhận được gì?

  • Khả năng sử dụng CMake như một ngôn ngữ lập trình

  • Các phương pháp hay nhất để xây dựng các dự án C++ bằng CMake

    • Quản lý các phụ thuộc bên ngoài bằng CMake

    • Tự động hóa quá trình phát triển bằng CMake

    • Xây dựng một dự án C++ có cấu trúc, có thể tái sử dụng bằng CMake

Từ khóa

  • Xây dựng hệ thống

  • CMake

  • Morden CMake

  • Kiến trúc dự án

  • Hệ thống mô-đun

  • Thư viện của bên thứ ba

Những điều cần lưu ý trước khi tham gia khóa học

Môi trường thực hành

  • Hệ điều hành và phiên bản (OS): macOS, Ubuntu

  • Công cụ sử dụng: Clang, CMake, Visual Studio Code (VSCode)

  • Thông số kỹ thuật PC: Bất kỳ PC nào có khả năng xây dựng C++

Kiến thức và biện pháp phòng ngừa của người chơi

mã có thể đọc được

Tại sao lại là readable_code?

Tôi vẫn còn nhớ cảm giác tự ti khi lần đầu tiên bước vào phòng thí nghiệm sau đại học và nhìn vào mã nguồn đã được triển khai. "Ôi... tại sao mình có xem đi xem lại cũng không hiểu được nhỉ?" Lúc đó, tôi cứ nghĩ đó là do thiếu sót của bản thân. Hơn mười năm đã trôi qua kể từ đó. Giờ thì tôi nhận ra: vấn đề không phải ở tôi, mà là ở mã nguồn.

Nhiều nhà phát triển viết mã một cách khó hiểu và kêu lên, "Tôi phải quay lại!" Nhưng những mã đó sớm trở lại ám ảnh họ như một xiềng xích. Mã được viết mà không tuân thủ các quy ước để triển khai nhanh chóng và việc sử dụng quá nhiều chú thích gây ra sự nhầm lẫn khi đọc, và các giao diện được tạo ra một cách cẩu thả cuối cùng khiến việc phân biệt dữ liệu nào đang được trao đổi trở nên khó khăn. Mã được viết theo cách này, theo thời gian, tạo ra kết quả không chính xác, trở nên không thể đọc được đối với bất kỳ ai. Ngay cả tác giả của mã , sau một tuần không xem lại, cũng thấy mình phải mở sổ mã có tên là "gỡ lỗi" và giải mã mã .

Chúng ta gọi mã nguồn là một ngôn ngữ . Ngôn ngữ tồn tại để giao tiếp với một cái gì đó. Nhiều người lầm tưởng rằng một cái gì đó là máy tính. Quan niệm sai lầm này chính là nguyên nhân dẫn đến sự ra đời của nhiều thứ mật mã mà chúng ta gọi là mã. (Chẳng phải thật thú vị khi mã thực sự có nghĩa là mã hóa sao?)

Nhưng như tôi đã đề cập trước đó, mã nguồn không phải là thứ máy tính đọc, mà là thứ chúng ta đọc. Do đó, viết mã nguồn cũng giống như viết, và cụ thể hơn là viết tài liệu kỹ thuật. Bạn cần viết mã nguồn ngắn gọn và đủ rõ ràng để mọi người có thể hiểu. Mã nguồn được viết theo cách này dễ đọc và dễ hiểu cho bất kỳ ai, bất kể họ nhìn thấy nó khi nào. Đáng tiếc là, trong lĩnh vực tôi từng làm việc, mọi người thường nói rằng họ không có thời gian để xem xét và triển khai những chi tiết nhỏ nhặt như vậy. Tuy nhiên, điều tôi học được là vấn đề không phải là "không thể làm điều gì đó vì không có thời gian", mà là "không thể làm điều đó vì không có cách nào để làm".

Mã dễ đọc đối với mọi người ( readable_code ) cũng dễ đọc đối với máy tính trong hầu hết các trường hợp. Điều này là do nó tránh các biến, hàm, chuyển đổi và quy trình không cần thiết. Điều này cũng cải thiện đáng kể hiệu suất cộng tác và bảo trì mã. Ví dụ, tại công ty của tôi, tôi đã từ bỏ khuôn khổ hiện tại và thiết kế và triển khai một khuôn khổ mới. Công việc tích hợp mã này đã rút ngắn công việc vốn phải mất hai tuần với khuôn khổ hiện tại xuống chỉ còn ba ngày . Hơn nữa , việc triển khai mô-đun, vốn phải mất ba tháng với khuôn khổ hiện tại, đã trở nên khả thi trong vòng chưa đầy một tháng . Vấn đề với mã dễ đọc đối với con người là bạn không thể triển khai nó; nếu bạn có thể, thì không có lý do gì để không triển khai. Đó là một điều đáng kinh ngạc có thể cải thiện đáng kể hiệu quả phát triển.

Văn hóa phát triển trưởng thành, tinh thần hợp tác và mã nguồn dễ đọc thường được coi là những yếu tố cần có, hay nói đúng hơn là tùy chọn. Tuy nhiên, tôi đã chứng kiến sức mạnh của mã nguồn dễ đọc và trải nghiệm ứng dụng thực tế của nó. Mặc dù tôi có thể áp dụng kiến thức này cho công ty và nhóm của mình, nhưng tôi không muốn hài lòng với điều đó. Tôi muốn tăng năng suất phần mềm của Hàn Quốc. Tôi muốn các kỹ sư được phát triển trong một môi trường tốt hơn. Tôi muốn một văn hóa phát triển mạnh mẽ được thấm nhuần trong các công ty Hàn Quốc.

Từ giờ trở đi, tôi sẽ chia sẻ với bạn tất cả những kinh nghiệm tôi đã có, những thành công và thất bại, và tất cả những kiến thức tôi đã học được trên chặng đường này . Những điều này vô cùng quý giá và sẽ là nền tảng vững chắc cho con đường của bạn. Bạn có muốn tham gia cùng chúng tôi không? (y/n) … -y

Sự khác biệt giữa readable_code và readable_code

  • Một giảng viên có kinh nghiệm về kiến trúc phần mềm sẽ giảng dạy dựa trên phần mềm đã được xác minh là có hiệu quả trong thực tế.

  • Bao gồm nội dung áp dụng cho công việc/phát triển thực tế

  • Nó truyền đạt bí quyết và khái niệm có được thông qua kinh nghiệm phát triển thực tế, chứ không phải nội dung lý thuyết có thể học được bằng cách đọc sách.

  • Chúng tôi đã triển khai một cấu trúc có thể hiểu được chỉ bằng cách nghe một bài giảng bằng cách loại bỏ tối đa sự phụ thuộc giữa các bài giảng.

Cách đọc tiêu đề bài giảng

  • Mô tả tiêu đề bài giảng bằng kỹ thuật snake_case được sử dụng khi mô tả các biến và không gian tên trong C++

  • Chia thứ bậc của các bài giảng theo cách tương tự như sử dụng không gian tên trong C++.

  • readable_code:: language_name :: xx::yy::zz::Course_Name - Phụ đề

    • language_name : Mô tả ngôn ngữ lập trình được sử dụng trong bài giảng (ví dụ: cpp, c, python, v.v.)

    • xx, yy, zz : Thể hiện thứ bậc chi tiết của từng bài giảng, các thuộc tính của bài giảng (ví dụ: thiết kế, xác minh, v.v.)

    • Corresponding_Course_Name: Tên của cấp độ thấp nhất mô tả tên gốc của bài giảng.

    • Phụ đề : Giải thích thêm về bài giảng


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Bất cứ ai mới phát triển C++

  • Bất kỳ ai muốn có được một dự án CMake được triển khai tốt một cách có hệ thống

  • Những người cần phát triển C++ trên nhiều hệ điều hành

  • Người đã quản lý dự án bằng cách sửa đổi từng chút một tệp CMake đang chạy

  • Bất cứ ai muốn quản lý các phần phụ thuộc bên ngoài một cách đơn giản

  • Bất cứ ai muốn quản lý hiệu quả cấu trúc của dự án

Cần biết trước khi bắt đầu?

  • C++

  • Thiết lập môi trường phát triển (Ubuntu, VSCode)

Xin chào
Đây là

562

Học viên

18

Đánh giá

4

Trả lời

4.7

Xếp hạng

2

Các khóa học

👋 안녕하세요, 개발대장 양은성입니다

"또 야근이야? 이 코드 누가 짠 거야?"

자율주행 개발을 하면서 수없이 들었던 말들입니다. 복잡한 C++ 코드와 씨름하며 밤을 새고, 버그 때문에 주말 출근하던 날들이 있었어요.

그런데 어느 순간 깨달았습니다. 문제는 실력이 아니라 시스템이었다는 걸요.

좋은 개발자가 되는 건 "어떻게" 코딩하느냐가 아니라 "왜" 그렇게 해야 하는지를 이해하는 것부터 시작한다고 생각해요.

그래서 만들었습니다. 같은 고민을 하는 개발자들이 함께 성장할 수 있는 공간, Ground::Builder를요.


🚀 지금 뭘 하고 있나요?

현재: (주)HolyGround 대표로 Ground::Builder 운영 중

과거:

  • 스트라드비전에서 Visual SLAM 아키텍트로 자율주행 기술 개발

  • 로보티즈에서 배달 로봇 인지 시스템 개발

주력 분야: C++, CMake, SLAM, 멀티스레딩, 시스템 아키텍처

교육 활동: SSAFY 멘토, K-Digital Training, 특성화고 강의, 기업 컨설팅


🛠 요즘 작업 중인 것들

"이런 게 있었으면 좋았을 텐데" 시리즈

CodeCraft
"팀 코딩 컨벤션 때문에 맨날 싸워요" → 자동화로 해결

C++ DevEnv Accelerator
"개발 환경 설정만 하루 종일 해요" → 원클릭으로 해결

C++ Ultimate CMake Template
"CMake 너무 복잡해요" → 복붙으로 해결

TitanCore
"멀티스레드 안전하게 어떻게 해요?" → 템플릿으로 해결


📚 "이론보다는 실전" 강의

인프런에서 만날 수 있어요

C++ 개발환경 설정 A to Z
"왜 내 컴퓨터에서만 안 되지?" 이런 고민 끝!

Modern CMake 실전
"CMake 문서 읽다가 포기했어요" → 실무에서 바로 쓰는 방법만


💬 같이 얘기해요

리더블코드 오픈채팅 (운영자)
"이 코드 어떻게 개선할까요?" 일상 잡담부터 코드 리뷰까지

Spatial AI KR (SLAM 전문 커뮤니티 부운영자)


🔧 오픈소스 활동

GitHub: @movingChurch

cmake_ground
"CMake 템플릿 하나씩 만들기 귀찮아요" → 여기서 가져다 쓰세요


💭 같이 고민하는 개발자들에게

"이 버그 왜 안 잡혀?"
"이 코드 누가 이해해?"
"또 야근이야?"

저도 똑같은 고민을 했어요. 밤새 디버깅하고, 스파게티 코드와 싸우고, 팀원들과 코드 리뷰하다 싸우고...

그런데 깨달았습니다. 혼자 잘하는 것보다 함께 잘하는 게 더 중요하다는 걸요.

그래서 Ground::Builder를 만들었습니다. 혼자 끙끙대지 말고, 같이 고민하고 성장할 수 있는 공간이에요.

함께 가면 더 멀리 갈 수 있으니까요.


📱 연락처

이름: 양은성 (Paul)
닉네임: 개발대장
이메일: yes@holyground.world
GitHub: @movingChurch
LinkedIn: Eunsung Yang
Instagram: @captain.dev__
Threads: @captain.dev__


궁금한 거 있으면 언제든 연락주세요!
코딩 고민부터 인생 상담까지 🤝

Chương trình giảng dạy

Tất cả

16 bài giảng ∙ (4giờ 51phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

5 đánh giá

4.6

5 đánh giá

  • bumjunoh9024님의 프로필 이미지
    bumjunoh9024

    Đánh giá 1

    Đánh giá trung bình 3.0

    3

    50% đã tham gia

    The course content is fine. It covers the content and level suitable for beginners of CMake. However, the price is too high. If you ask me if it is worth it, I would say no. If the price were much cheaper, it would be a better choice.

    • hyeonsuchoi7884님의 프로필 이미지
      hyeonsuchoi7884

      Đánh giá 4

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • ojs9410104449님의 프로필 이미지
        ojs9410104449

        Đánh giá 3

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        • kimjaehyun1235님의 프로필 이미지
          kimjaehyun1235

          Đánh giá 2

          Đánh giá trung bình 5.0

          5

          31% đã tham gia

          • zz06223720님의 프로필 이미지
            zz06223720

            Đánh giá 5

            Đánh giá trung bình 5.0

            5

            31% đã tham gia

            3.462.471 ₫

            Khóa học khác của captaindev

            Hãy khám phá các khóa học khác của giảng viên!

            Khóa học tương tự

            Khám phá các khóa học khác trong cùng lĩnh vực!