강의

멘토링

로드맵

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

60 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

577

Learners

19

Reviews

4

Answers

4.7

Rating

2

Courses

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

새벽 3시 또 구글링하던 개발자가 어떻게 팀 생산성을 4배나 올렸는지 궁금하시죠?


"회사에서 100명 도와주는 것 vs 수만 명 개발자가 삽질 안 하는 것... 뭐가 더 의미 있을까?"

2년 전쯤 자율주행 회사에서 아키텍트 일 하면서 문득 든 생각이었어요.

근데 이 생각이 제 인생을 아예 바꿔버렸네요.

혹시 이런 거 겪어보신 적 있나요?

"아 씨, 개발 환경 설정만 벌써 하루 다 갔네..."

"이 CMake 에러는 대체 뭐가 문젠데?"

"멀티스레드 좀 건드렸다가 프로그램 뻗어버렸어..."

"또 코드 리뷰하다가 팀원이랑 싸웠어..."

아... 이거 다 10년 전 로보티즈 갓 입사했을 때 제 모습이에요. 배송 로봇 만든다고 C++ 멀티스레드 프레임워크를 아무것도 없는 상태에서 구현해야 하는데, 솔직히 변수가 뭔지 함수가 뭔지도 제대로 몰랐거든요.

매일같이 밤늦게까지 사무실에서 CUDA 병렬 처리랑 씨름하면서, 한 달에 코드를 2-3만 줄씩 갈아엎고... 오픈소스? 상용화 프로젝트라 못 쓰죠. 진짜 맨땅에 헤딩이었어요.

그런데 이 개지옥 같은 과정에서 하나의 깨달음을 얻었어요.

인생을 바꾼 하나의 깨달음

"아, 그냥 읽기 좋게 짜면 되는구나. 그럼 구조도 문법도 과정도 자연스럽게 정리되잖아?"

이 하나의 깨달음이 제 개발 인생을 완전히 바꿔놓았어요. 스트라드비전 가서 자동 주차용 Visual SLAM 시스템 설계할 때 이걸 팀에 적용해봤는데...

🚀 결과가 미쳤어요:

  • 기능 개발 기간: 2개월 → 2주 (아니 진짜 4배나 빨라짐)

  • 버그 수정 시간: 70% 줄어듦 (밤샘 디버깅은 이제 안녕~)

  • 코드 리뷰 때 싸우는 횟수: 60% 감소 (드디어 평화로운 리뷰)

  • 팀 야근: 거의 없어짐 (워라밸 챙겼다!)

산업 표준(MISRA C++ 2008) 지키면서도 이런 결과가 나온 거예요.

팀원들이 "와... 이제서야 진짜 개발하는 기분이에요!"라고 하더라고요. 그때 확신했죠, 아 이게 답이구나.

그래서 승승장구하고 있었어요. 커리어도 탄탄하고, 연봉도 괜찮고, 이직 제안도 계속 들어오고... 그런데 어느 날 문득 이런 생각이 들더라고요.

"어? 내가 회사에서 아무리 잘해봤자 기껏해야 100명한테 도움 되는 거잖아? 근데 교육을 한다면... 수천 명, 아니 수만 명의 개발자들이 나처럼 삽질 안 해도 되는 거 아니야?"

그래서 결심했어요. 안정적인 월급 차버리고 HolyGround 만들어서 제가 알고 있는 거 다 공개하기로.

왜냐고요? 이제 경쟁자도 아니고, 숨길 이유가 하나도 없거든요.

제가 지금까지 뭘 했는지 궁금하시죠?

🎯 HolyGround CEO (2023.06 ~ 지금)

"있었으면 좋았을 텐데" 시리즈 만들고 있어요

  • 개발자들 진짜 고민 해결하는 실전 교육 콘텐츠

  • C++ Core 시리즈: 프로젝트 설정, 로그 관리, 메모리 관리

  • 리더블 프로그래밍 가이드라인

  • 전부 현업에서 바로 써먹을 수 있는 실무 위주로 만들었어요

🚗 StradVision Visual SLAM Software Architect (2021.12 ~ 2023.05)

팀 생산성 4배 올린 그 회사 맞아요

  • 자동 주차용 Visual SLAM 시스템 아무것도 없는 상태에서 설계

  • 산업 표준(MISRA C++ 2008) 지키면서도 개발 속도 올리기

  • Docker 기반 CI/CD로 테스트 환경 구축을 90%나 단축

  • 고객사 인증도 통과해서 기술력 인정받았어요

🤖 Robotis Perception Part Tech-Lead (2019.01 ~ 2021.12)

진짜 맨땅에서 실력 키운 곳

  • 배송 로봇용 인지 소프트웨어 개발 리더 했어요

  • ROS 못 쓰고 C++ 멀티스레드 프레임워크 직접 만들어야 했음

  • Embedded Platform(Nvidia Jetson)에서 CUDA 병렬 처리 최적화

  • 한 달에 2-3만 줄씩 갈아엎으면서 제로베이스 구현 능력 기름

대한민국 개발자들과 함께한 교육 여정

🎓 프로그래머스 자율주행 데브코스 (1기, 2기, 3기, 5기, 6기)

"이제야 진짜 개발 방법을 배운 기분이에요!"

  • C++ 개발환경, 빌드 시스템, 코드 품질 향상 전략 특강

  • 멘토링을 통한 팀 프로젝트 완료율 대폭 향상

  • 수강생들의 실제 후기: "단순 문법이 아닌 실무 철학을 배웠어요"

📚 인프런 베스트셀러 강의

"왜 내 컴퓨터에서만 안 되지?" 고민 종결자

🏢 기업 및 기관 특강

  • SSAFY 포트폴리오 특강 - "실전 취업 전략"

  • 서울ICT이노베이션 특성화고 Python 교육 - "고등학생도 이해하는 프로그래밍"

어린 시절부터 지금까지: 로봇과 함께한 인생

🤖 로봇 꿈나무 시절

어린 시절부터 로봇을 사랑했던 저는 부모님이 사주신 프로그래머블 레고로 처음 프로그래밍을 접했습니다. 중학생 때는 마인드스톰으로 로봇 대회에 나가 국가대표로 세계 대회까지 참가했죠.

📚 연구자 시절의 착각

하지만 대학원에서 만난 로봇은 제가 알던 그것과 완전히 달랐습니다. 복잡한 수식, 어려운 C++ 코드... 변수와 함수도 제대로 모르던 제가 로봇 소스코드를 읽고 수정해가며 연구해야 했으니까요.

다행히 ROS 덕분에 파라미터 조정으로 근근이 연구를 이어갔지만, 지금 생각해보면 이게 오히려 독이 되었던 것 같습니다. 진짜 구현 능력을 기르지 못했거든요.

💼 현업에서의 각성

현업에 들어가니 상황이 완전히 달랐습니다. 오픈소스를 사용할 수 없는 상용화 프로젝트에서 제로베이스부터 모든 걸 구현해야 했거든요.

처음 1-2년은 정말 지옥이었습니다. 하지만 이 과정에서 진짜 프로그래밍 기반을 다졌고, "오픈소스 없이도 만들 수 있는 진짜 실력"을 기를 수 있었습니다.

4배 생산성 향상의 비밀: 개발대장의 핵심 철학

🎯 황금 원칙

"반복적인 작업은 기계에게, 창의적인 문제 해결은 사람에게"

🤖 기계가 담당하는 것들 (자동화)

  • 포매팅: "코드 스타일 때문에 싸우지 마세요"

  • 테스트: "사람이 매번 돌릴 필요 없어요"

  • 환경 통일: "내 컴퓨터에서만 되는" 현상 박멸

  • 정적 분석: "컴파일 전에 문제 발견"

🧠 사람이 집중해야 하는 것들 (창조)

  • 아키텍처 설계: "시스템의 전체 그림"

  • 알고리즘 구현: "핵심 비즈니스 로직"

  • 최종 판단: "이게 맞나? 품질 검증"

🏆 실제 적용 결과

이 철학을 적용하면:

  • 구조가 명확해집니다

  • 코드가 일관됩니다

  • "이 코드 뭐 하는 거예요?"라는 질문 자체가 사라집니다

  • 개발자는 정말 중요한 일에만 집중할 수 있습니다

왜 개발대장의 콘텐츠는 다를까요?

제로베이스 구현 경험

"오픈소스 없이도 만들 수 있는 진짜 실력"

  • 대부분의 강의: 오픈소스 활용법 위주

  • 개발대장 콘텐츠: 처음부터 직접 구현하는 방법

현업 검증된 성과

"이론이 아닌 실제로 써먹어본 방법들"

  • 팀 생산성 4배 향상이라는 검증된 결과

  • 산업 표준 준수하면서도 빠른 개발

  • 고객사 인증 통과로 입증된 품질

"있었으면 좋았을 텐데" 관점

"신입 때 간절히 원했던 것들"

  • 제가 10년 전 신입일 때 "이런 게 있었으면" 했던 것들

  • 화려한 이론 대신 "당장 써먹을 수 있는" 실전 해결책

  • "진짜 고민 해결사" 콘셉트

HolyGround "있었으면 좋았을 텐데" 시리즈

💻 실전 중심 프리미엄 콘텐츠

🔧C++ Core 프로젝트 설정 관리 (₩99,000)

"하드코딩 때문에 파라미터 하나 바꿀 때마다 전체 팀이 빌드 기다리는 답답함"을 해결해드립니다. 타입 안전한 Configuration 시스템으로 빌드 시간을 15분에서 1분으로 단축하세요.

📋C++ Core 로그 관리 (₩99,000)

"cout 디버깅으로 프로그램이 버벅거리고, 장애 때마다 원인을 못 찾아서 밤샘"한 경험 있으시죠? spdlog 기반 10배 빠른 성능의 로깅 시스템을 직접 구현해보세요.

🧠C++ Core 메모리 관리 (₩199,000)

"메모리 누수와 포인터 오류로 밤잠 못 이루는" 모든 C++ 개발자를 위한 8단계 로드맵. 실시간 시스템용 메모리 풀까지 구현하며 체계적인 메모리 관리 전문성을 확보하세요.

📖C++ 리더블 프로그래밍 가이드라인 (₩149,000)

"읽기 좋은 코드가 좋은 코드"라는 철학을 현업 10년 경험으로 체계화했습니다. 자동화 도구와 인간의 역할을 명확히 분리하여 팀 전체의 코드 품질을 한 번에 끌어올리는 가이드입니다.

C++ Ultimate Boilerplate (₩299,000)

"새 프로젝트 시작할 때마다 환경 설정에 며칠씩 허비하는" 고통을 끝내드립니다. 크로스플랫폼 C++ 프로젝트 템플릿으로 5분 내 새 프로젝트 시작, 완전 자동화된 개발 환경을 경험하세요.

🛠C++ 개발환경 자동화 시스템 (₩199,000)

"개발 환경 설정하느라 하루 날린다"는 말 이제 그만하세요. 완전 자동화된 개발환경 시스템으로 클릭 한 번에 모든 툴체인이 세팅되는 마법을 경험해보세요.

🎯 각 콘텐츠의 차별점

개발대장과 함께 성장하세요

💝 제가 드리는 약속

"이제 경쟁자도 아닌데 가진 거 다 알려드릴게요"

제가 현업에서 삽질하면서 터득한 모든 걸 숨기지 않고 다 알려드려요. 더 많은 개발자들이 저처럼 고생 안 했으면 좋겠거든요.

🎯 이런 분들이면 딱이에요

  • "개발 환경 설정만 하루 종일 한다" 하시는 분

  • "CMake 에러 때문에 포기하고 싶다" 하시는 분

  • "멀티스레드는 무서워서 손도 못 댄다" 하시는 분

  • "코드 리뷰할 때마다 팀원이랑 싸운다" 하시는 분

  • "제로베이스로 구현할 수 있는 실력을 기르고 싶다" 하시는 분

🚀 함께하면 얻을 수 있는 것

📈 즉시 체감 가능한 변화:

  • 개발 환경 설정: 90% 시간 단축

  • 디버깅 시간: 70% 감소

  • 코드 리뷰 갈등: 60% 해결

  • 팀 커뮤니케이션: 50% 효율화

🎯 장기적 역량 향상:

  • 제로베이스 시스템 설계 능력

  • 팀을 이끄는 아키텍트 역량

  • 자동화 중심 개발 문화 구축 능력

  • 읽기 좋은 코드 작성 습관화

💡 개발대장만의 특별한 가치

"10년 시행착오의 압축팩"

  • 현업 검증: 실제 프로젝트에서 검증된 방법론만 전달

  • 완성도 차별화: "이론 → 실습 → 실전" 완전한 학습 프로세스

  • 시간 압축: 10년간의 시행착오를 몇 주로 단축

  • 실무 직결: 내일 당장 현업에서 써먹을 수 있는 스킬

🏅 검증된 교육 철학

"개발자는 반복 작업에 시간을 낭비하면 안 됩니다. 진짜 중요한 문제 해결에 집중해야죠."

이 철학이 4배 생산성 향상이라는 실제 결과로 입증되었습니다.

🗣 따뜻한 커뮤니티

리더블코드 오픈채팅 (운영자)

  • 코딩 고민부터 일상 잡담까지 환영

  • "질문 잘하는 법"부터 "읽기 쉬운 코드 스타일"까지

  • 현업 개발자들의 진짜 고민 공유 및 해결

Spatial AI KR (부운영자)

  • SLAM, 자율주행, 로보틱스 전문 커뮤니티

  • 업계 전문가들과의 기술 토론

  • 최신 논문 리뷰 및 현업 적용 사례 공유

혼자 끙끙대지 말고, 함께 성장해요

😤 이런 고민들, 저도 엄청 했어요

  • "아 또 야근이야..."

  • "이 버그는 도대체 왜 안 잡히지?"

  • "코드 리뷰할 때마다 팀원이랑 또 싸웠어..."

밤새 디버깅하고, 스파게티 코드랑 씨름하고, 개발 환경 설정만 하루 종일 붙잡고 있던 시절 저한테도 있었거든요.

🌟 같이 가면 더 멀리 갈 수 있어요

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

그래서 HolyGround 만든 거예요. 혼자 끙끙대지 말고, 같이 고민하고 성장할 수 있는 곳이거든요.

🎯 진짜 실력은 오픈소스 없어도 만들 수 있는 거예요

오픈소스 갖다 쓰는 거랑 오픈소스 없으면 아무것도 못 하는 거랑은 하늘과 땅 차이거든요.

아무것도 없는 상태에서부터 개발해본 경험이 제 성장에 결정적 영향을 줬던 것처럼, 특히 현업 가려는 개발자라면 이런 경험이 꼭 필요해요.

📞 언제든지 연락주세요


🤝"혼자 끙끙대지 말고, 같이 해요!"개발하다가 막히는 거 있으면?개발대장한테 물어보세요!🚀아는 거 다 알려드릴게요.


개발대장 양은성

한국 개발자들 잘됐으면 좋겠어서 하는 일이에요

Curriculum

All

16 lectures ∙ (4hr 51min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

5 reviews

4.6

5 reviews

  • 오범준님의 프로필 이미지
    오범준

    Reviews 1

    Average Rating 3.0

    3

    50% enrolled

    강의 내용은 괜찮습니다. 처음 CMake 를 다루는 사람들에게 적합한 내용과 수준을 다룹니다. 하지만 가격이 지나치게 비쌉니다. 이 정도 가격으로 들을 만하냐라고 물어본다면 아니다. 라고 말하고 싶습니다. 가격만 훨씬 저렴하다면 더 좋은 선택지가 될 것 같습니다.

    • 최현수님의 프로필 이미지
      최현수

      Reviews 4

      Average Rating 5.0

      5

      100% enrolled

      • 오진산님의 프로필 이미지
        오진산

        Reviews 3

        Average Rating 5.0

        5

        100% enrolled

        • 김재현님의 프로필 이미지
          김재현

          Reviews 2

          Average Rating 5.0

          5

          31% enrolled

          • 김지원님의 프로필 이미지
            김지원

            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!