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

/

Programming Language

readable_code::CMake - Create a Fancy C++ Project

What is the biggest obstacle in C++? When I think about it, I think it is CMake. When I first started C++, CMake made it difficult to build even one source file… Let’s break it together. With this lecture, you too can become a CMake Master!

(4.6) 5 reviews

58 learners

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

What you will learn!

  • CMake Basic Grammar

  • Modern CMake syntax

  • Managing external dependencies (separate CMake projects, 3rd party libraries) using CMake

  • Building a C++ project using CMake

readable_code

cpp::build_system::modular_project_with_cmake - Create fancy C++ projects without OS/platform dependencies.

Learn about CMake, essential for creating C++ projects!

  • Is CMake difficult?

  • However, in this lecture, we will learn a CMake template that can be used for any project configuration.

  • I'll tell you everything I've learned from struggling with CMake for over 10 years!

Learn about these things

Basic syntax of CMake

  • We'll teach you the basic syntax that will help you make better use of CMake.

  • Let's use CMake like a programming language by learning basic grammar such as variables, messages, functions, and control statements!

Modern CMake syntax

  • Just as the programming paradigm changed from C to C++, modern CMake is now the trend!

  • When building libraries and executables with CMake, avoid using the old methods.

Managing External Dependencies with CMake

  • Are you still managing external dependencies by installing them on your PC?

  • Let's manage CMake projects and external dependencies in an integrated manner.

  • Now you can eliminate the need to install separate libraries to build your projects!

Building a reusable C++ project using CMake

  • It contains the essence of over 10 years of development experience.

  • We provide a CMake structure that allows you to get maximum efficiency with minimal modifications.

  • You've never seen a project structure like this before, have you?!

What can you get?

  • Ability to use CMake like a programming language

  • Best practices for building C++ projects using CMake

    • Managing external dependencies with CMake

    • Automating the development process using CMake

    • Building a reusable, structured C++ project using CMake

Keywords

  • Build System

  • CMake

  • Morden CMake

  • Project Architecture

  • Modular System

  • Third-party library

Things to note before taking the course

Practice environment

  • Operating System and Version (OS): macOS, Ubuntu

  • Tools used: Clang, CMake, Visual Studio Code (VSCode)

  • PC specifications: Any PC capable of building C++

readable_code

Why readable_code?

I still remember the feeling of self-doubt I felt when I first entered the graduate school lab and looked at the implemented source code. "Oh... why can't I understand it no matter how much I look at it?" At the time, I thought it was my own shortcomings. More than ten years have passed since then. Now, I realize: the problem wasn't me, it was the code.

Many developers write code, cryptic, and cry out, "I have to get back to it!" But those codes soon come back to haunt them like a shackle. Code written without adherence to conventions for quick implementation and overused comments create confusion when reading, and carelessly created interfaces eventually make it difficult to discern what data is being exchanged. Code written this way, over time, produces incorrect results, becoming unreadable to anyone. Even the author of the code , after a week without looking at it, finds himself having to open the codebook called "debugging" and decipher the code .

We call source code a language . Language exists to communicate with something. Many people mistakenly believe that something is a computer. This misconception is what gives rise to the many cryptographic things we call code. (Isn't it interesting that code actually means encryption?)

But as I mentioned earlier, code isn't something computers read, it's something we read. Therefore, writing source code is akin to writing, and more specifically, to writing technical documentation. You need to write code that's concise and clear enough for people to understand. Code written this way is easy for anyone to read and understand, no matter when they see it. Unfortunately, in the field I've worked in, people often say they don't have time to consider and implement such trivial details. However, what I've learned is that it's not about "not being able to do something because there's no time," but "not being able to do it because there's no way to do it."

Code that's easy for people to read ( readable_code ) is also easy for computers to read, in most cases. This is because it avoids unnecessary variables, functions, transformations, and processes. This also dramatically improves collaboration and code maintenance performance. For example, at my company, I abandoned our existing framework and designed and implemented a new one. This shortened code integration work that would have taken two weeks with the existing framework to just three days . Furthermore , module implementation, which would have taken three months with the existing framework, became possible in less than a month . The problem with human-readable code is that it's not something you can implement; if you can, there's no reason not to. It's an incredible thing that can dramatically improve development efficiency.

A mature development culture, collaboration, and readable code are often considered nice-to-haves, or rather, optional. However, I've witnessed the power of readable code and experienced its practical application. While I might apply this knowledge to my company and team, I don't want to be satisfied with that. I want to increase Korea's software productivity. I want engineers to develop in a better environment. I want a strong development culture to take root within Korean companies.

From now on, I will share with you all the experiences I have had, the successes and failures, and all the know-how I have learned along the way . These are invaluable and will serve as a solid foundation for your path. Would you like to join us? (y/n) … -y

Differences between readable_code and readable_code

  • An instructor with software architect experience teaches based on software that has been verified to work in the field.

  • Covers content applicable to actual work/development

  • It conveys know-how and concepts acquired through actual development experience, not theoretical content that can be learned by reading books.

  • We implemented a structure that can be understood by listening to just one lecture by eliminating dependencies between each lecture as much as possible.

How to read lecture titles

  • Describing lecture titles using the snake_case technique used when describing variables and namespaces in C++

  • Divide the hierarchy of lectures in a way similar to using namespaces in C++.

  • readable_code:: language_name :: xx::yy::zz::Course_Name - Subtitle

    • language_name : Describe the programming language in which the lecture is being held (ex. cpp, c, python, etc.)

    • xx, yy, zz : Represents the detailed hierarchy of each lecture, the properties of the lecture (e.g. design, verification, etc.)

    • Corresponding_Course_Name: The name of the lowest level describes the original name of the lecture.

    • Subtitle : Additional explanation of the lecture


Recommended for
these people

Who is this course right for?

  • For those who are new to C++ development

  • For those who want to get a well-implemented CMake project in a systematic way.

  • Anyone who needs to develop C++ across multiple OSs

  • Someone who has been managing a project by modifying the CMake file little by little

  • For those who want to manage external dependencies simply

  • Anyone who wants to manage the structure of a project efficiently

Need to know before starting?

  • C++

  • Setting up your development environment (Ubuntu, VSCode)

Hello
This is

562

Learners

18

Reviews

4

Answers

4.7

Rating

2

Courses

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

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

자율주행 개발을 하면서 수없이 들었던 말들입니다. 복잡한 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__


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

Curriculum

All

16 lectures ∙ (4hr 51min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

4.6

5 reviews

  • bumjunoh9024님의 프로필 이미지
    bumjunoh9024

    Reviews 1

    Average Rating 3.0

    3

    50% enrolled

    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

      Reviews 4

      Average Rating 5.0

      5

      100% enrolled

      • ojs9410104449님의 프로필 이미지
        ojs9410104449

        Reviews 3

        Average Rating 5.0

        5

        100% enrolled

        • kimjaehyun1235님의 프로필 이미지
          kimjaehyun1235

          Reviews 2

          Average Rating 5.0

          5

          31% enrolled

          • zz06223720님의 프로필 이미지
            zz06223720

            Reviews 5

            Average Rating 5.0

            5

            31% enrolled

            $127.60

            captaindev's other courses

            Check out other courses by the instructor!

            Similar courses

            Explore other courses in the same field!