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

/

Programming Language

readable_code::CMake - FancyにC++ Projectを作成する

C ++の最大の障壁は何ですか?私が思ったときはCMakeではないかと思います。初めてC ++を起動したとき、ソースファイルを1つビルドするのも難しくしたCMake…私と一緒に壊したのでしょうか?この講義と一緒なら、あなたもCMake Master!

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

こんなことが学べます

  • CMake基礎文法

  • Modern CMake文法

  • CMakeを使用した外部依存関係(別々のCMake project、3rd party library)の管理

  • CMakeを使用したC ++プロジェクトの構築

readable_code

cpp::build_system::modular_project_with_cmake - OS/Platform 依存関係なしで fancy に C++ プロジェクトを作成する

C ++プロジェクトの作成に不可欠なCMakeについて学びましょう!

  • CMakeは難しいですか?

  • しかし、このレッスンでは、どのプロジェクト構成でも使用できるCMakeテンプレートをお知らせします。

  • 10年以上CMakeで大変苦労して知り合ったエキス全部お知らせします!

このようなことを学びます。

CMakeの基礎文法

  • CMakeをよりよく活用できるようにする基礎文法を教えてください。

  • 変数、メッセージ、関数、制御ステートメントなどCMakeの基本文法を介してプログラミング言語のように試してみてください!

Modern CMakeの文法

  • C→C++でプログラミングパラダイムが変わったように、もうモダンCMakeが大勢です!

  • CMakeを介してライブラリと実行ファイルを作成するときは、古い方法を書かないようにしてください。

CMakeを使用した外部依存関係の管理

  • まだ外部依存関係をPCにインストールして管理しますか?

  • CMakeプロジェクトと外部依存関係を統合して管理しましょう。

  • 今プロジェクトをビルドするために、別のライブラリのインストールプロセスをなくすことができます!

CMakeを使用した再利用可能なC ++プロジェクトの構築

  • 10年以上の開発経歴の定数を盛り込んでいます。

  • 最小限の修正で最大限の効率を得ることができるCMake構造をお届けします。

  • このようなプロジェクト構造はどこでも見たことがないでしょうか!

何を得ることができますか?

  • プログラミング言語のようにCMakeを使用する能力

  • CMakeを使用したC ++プロジェクト構築のベストプラクティス

    • CMakeの外部依存関係の管理

    • CMakeを使用した開発プロセスの自動化

    • CMakeを使用した再利用可能な構造化C ++プロジェクトの構築

キーワード

  • ビルシステム

  • CMake

  • Morden CMake

  • Project Architecture

  • Modular System

  • Thirdparty library

受講前の注意

練習環境

  • オペレーティングシステムとバージョン(OS):macOS、Ubuntu

  • 使用ツール: Clang, CMake, Visual Studio Code (VSCode)

  • PC仕様:C++ビルド可能なすべてのPC

選手の知識と注意事項

readable_code

なぜreadable_codeですか?

大学院研究室に初めて入って実装されているソースコードを見ながら聞いた自壊感がまだ覚えています。 「あ…どうしてどんなに見ても理解できない?」当時は私が足りなかったので、そんなことを知っていました。その時から10年以上の時間が経ちました。今は分かりました。私は問題ではなく、コードは問題でした。

多くの開発者がコードという名前のパスワードを作成し、「一度戻る必要があります!」と叫んでいます。しかし、これらのコードはすぐに翡翠はネックラインになって私に戻ります。迅速な実装のためにコンベンションを合わせずに実装したコードと乱発なコメントはコードを読み取るのに混乱を招き、大きな考えなしに作っておいたインターフェースは後でどのようなデータをやり取りするためであるかすら薄れます。このように編まれたコードは、時間の経過とともに誤った結果値が発散するように、誰も読み取れないコードになっていきます。さらに、そのコードを書いた本人もコードを見ずに1週間経つと、そのパスワードをデバッグというコードブックを展開して解釈しなければなりません

私たちはソースコードを言語と呼びます。言語は、ある存在と話すために存在するものです。ここでは、多くの人がその存在をコンピュータだと思います。この勘違いから引き起こされるコードと呼ぶ多くの暗号が出てくるのでしょう。

しかし、前述のように、コードはコンピュータが読むのではなく、私たちが読むものです。だから、ソースコードを書くのは書くのと同じです。その中でも技術文書を書くのと似ています。簡潔で明確に人が理解できるようにコードを書く必要があります。このように書かれたコードは、いつ誰が見ても楽に読んで理解することができます。残念ながら、私が経験した現業では、そんな些細で細かいことを考慮して実装する時間がないそうです。しかし、私が感じたのは「時間がないからできないこと」ではなく、「できないからできないこと」でした。

人が読むのに良いコードreadable_code )は、ほとんどの場合、コンピュータが読むのに最適です。不要な変数、関数、変換、プロセスを実装しないからです。また、コラボレーションとコードメンテナンスのパフォーマンスを飛躍的に向上させます。実際に私は私がいた会社で既存のフレームワークを捨てて新しいフレームワークを設計して実装し、既存のフレームワークで2週間かかっても進行しにくかったコード統合作業を3日で可能に短縮させました。また、既存のフレームワークで3ヶ月ほどかかったモジュール実装が1ヶ月もかからない時間に可能になりました。こうして人が読みにくいコードは実装ができなくて問題なのです。

今までは成熟した開発文化とコラボレーション、人が読むのに良いコードは多くの場合あれば良いもの、なくても大きな気にしないような程度に治めることが多いようです。しかし、私は人が読書に良いコードの能力を見て、その実際を経験しました。私はこれを地葉的に私がいる会社やチームに適用することもできますが、私はそれほど満足したくありません。韓国のSW生産性自体を育てたいです。エンジニアの方々がより良い環境で開発をしたいと思います。良い開発文化が韓国の会社の中にあることを望みます。

私はこれから私が持っていた経験、成功と失敗、そしてその過程で知ったすべてのノウハウを皆さんと分かち合おうとします。これらは非常に大切なものであり、あなたが行く途中でしっかりとした基盤になるでしょう。一緒にしますか?(y/n) … -y

readable_codeの差別点

  • Software architectの経験を持つ講師が、現業で動作を検証したソフトウェア内容に基づいて講義する

  • 実際の業務・開発に適用可能な内容

  • 本を読んで知ることができる理論的な内容ではなく、実際の開発経験に基づいて習得したノウハウと概念を伝える

  • 各レッスン間の依存関係を最大限に排除することで、1つのレッスンしか聞こえない理解可能な構造を実装します。

講義名の読み方

  • C++で変数と名前空間を記述するときに使用するsnake_case技術で講義名技術

  • C++で名前空間を使用する方法で講義の階層を分割する

  • readable_code:: language_name :: xx::yy::zz::該当_講義名-サブタイトル

    • language_name : どのプログラミング言語の講義か技術(ex. cpp, c, python, etc…)

    • xx、yy、zz :各講義の詳細階層、講義の属性を表現(ex.設計、検証、etc…)

    • 対応_講義名:最下階層名は講義の見た名前を記述

    • サブタイトル:講義の説明について


こんな方に
おすすめです

学習対象は
誰でしょう?

  • C++開発を初めて始める方

  • 体系的にうまく実装されたCMakeプロジェクトを取得したい人

  • 複数のOSを行き来してC++を開発しなければならない方

  • 戻るCMakeファイルを少しずつ修正していき、プロジェクトを管理してきた方

  • 外部依存関係を簡単に管理したい方

  • プロジェクトの構造を効率的に管理したい方

前提知識、
必要でしょうか?

  • C++

  • 開発環境設定(Ubuntu、VSCode)

こんにちは
です。

562

受講生

18

受講レビュー

4

回答

4.7

講座評価

2

講座

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

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

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


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

カリキュラム

全体

16件 ∙ (4時間 51分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

5件

4.6

5件の受講レビュー

  • bumjunoh9024님의 프로필 이미지
    bumjunoh9024

    受講レビュー 1

    平均評価 3.0

    3

    50% 受講後に作成

    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

      受講レビュー 4

      平均評価 5.0

      5

      100% 受講後に作成

      • ojs9410104449님의 프로필 이미지
        ojs9410104449

        受講レビュー 3

        平均評価 5.0

        5

        100% 受講後に作成

        • kimjaehyun1235님의 프로필 이미지
          kimjaehyun1235

          受講レビュー 2

          平均評価 5.0

          5

          31% 受講後に作成

          • zz06223720님의 프로필 이미지
            zz06223720

            受講レビュー 5

            平均評価 5.0

            5

            31% 受講後に作成

            ¥19,545

            captaindevの他の講座

            知識共有者の他の講座を見てみましょう!

            似ている講座

            同じ分野の他の講座を見てみましょう!