inflearn logo

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

69 learners

Level Basic

Course period Unlimited

C++
C++
cmake
cmake
software-design
software-design
C++
C++
cmake
cmake
software-design
software-design

What you will gain after the course

  • 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 captaindev

Career Verified

661

Learners

24

Reviews

4

Answers

4.8

Rating

2

Courses

Former autonomous driving C++ software architect
Robotics and autonomous driving development · C++ education · Practical applications of AI in the workplace

↗ HolyGround · Education · Career · Content

↗ Mastering AI Community

Career

  • Current HolyGround — Educational platform operations · C++ development · AI application training

  • Former StradVision — Visual SLAM Software Architect · Automated Parking Mapping & Localization

  • Former Robotis — Perception Part Tech Lead · Perception for outdoor delivery robots

  • Programmers Autonomous Driving Dev Course — C++ Instructor & Mentor

Areas of Expertise

  • Robotics · Autonomous Driving Software

  • C++ Development Environment · Build Systems · Project Structure

  • Applying AI to development, course creation, and business operations

Course

Inflearn

HolyGround

Practical Tools and Resources

More

Curriculum

All

16 lectures ∙ (4hr 51min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

4.6

5 reviews

  • ojs9410104449님의 프로필 이미지
    ojs9410104449

    Reviews 3

    ∙

    Average Rating 5.0

    5

    100% enrolled

    • hyeonsuchoi7884님의 프로필 이미지
      hyeonsuchoi7884

      Reviews 11

      ∙

      Average Rating 4.9

      5

      100% enrolled

      • zz06223720님의 프로필 이미지
        zz06223720

        Reviews 5

        ∙

        Average Rating 5.0

        5

        31% enrolled

        • 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.

          • kimjaehyun1235님의 프로필 이미지
            kimjaehyun1235

            Reviews 2

            ∙

            Average Rating 5.0

            5

            31% enrolled

            Similar courses

            Explore other courses in the same field!

            25% off for new members

            $97.60

            25%

            $127.60