C ++でプログラミングしたことがあるなら、CMakeに遭遇したことがあるはずです。そして、すべてが単純に 収集しないCMakeは強力なツールですが、その構文と構造はしばしば苦痛を引き起こします。CMakeの設定方法を見てみましょう 一度だけ、正しく、混乱に戻らないように 💡

🔰 CMakeとは何ですか?
CMakeはビルド生成システムです。コードを直接コンパイルするのではなく、 アセンブリ用のファイルを作成します あなたのシステムに合わせて:Makefile、Ninja、Xcode、またはVisual Studio。
✅クロスプラットフォームで動作
✅依存関係をカスタマイズできる
✅ 大規模プロジェクトの組み立てを簡素化
✅ IDEおよびCI/CDとの互換性
🧱 CMakeを使用したプロジェクトの基本構造
project-root/
├── CMakeLists.txt
├── src/
│ └── main.cpp
├── include/
│ └── mylib.hpp
├── CMakeLists.txt (внутри src/)📌ルートCMakeLists.txt:
cmake_minimum_required(VERSION 3.15)
project(MyProject)
set(CMAKE_CXX_STANDARD 20)
add_subdirectory(src)📌 src/CMakeLists.txt:
add_executable(my_app main.cpp)
target_include_directories(my_app PRIVATE ../include)⚙️ CMakeをスムーズに設定するためのヒント
1.グローバル変数の代わりにtarget_*を使用する
❌悪い:
include_directories(./include)✅ 正解:
target_include_directories(my_app PRIVATE ./include)2. compile_commands.json を追加します
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)VS Codeとclangdでのオートコンプリートとエラーの強調表示に役立ちます。
3. 常に out-of-source build を使用する
mkdir build && cd build
cmake ..
cmake --build .4. サードパーティのライブラリを正しく接続する
FetchContentの例:
include(FetchContent)
FetchContent_Declare(
json
URL https://github.com/nlohmann/json/releases/latest/download/json.hpp
)
FetchContent_MakeAvailable(json)
target_link_libraries(my_app PRIVATE nlohmann_json::nlohmann_json)🧪 良いCMakeプロジェクトのチェックリスト
✅ CMakeLists.txtは30行以下
✅ すべての依存関係は
target_*を介しています✅ Debug/Releaseのサポート
✅ アウトオブソースアセンブリ
✅ターミナルとIDEで動作します
📚 テーマを深めたいですか?
アプリで コディック CMakeとC ++の詳細なレッスン、ステップバイステップのエクササイズ、エラー解析、そしてあなたの携帯電話またはブラウザで簡単に練習することができます。
ニュース、新機能、役立つ資料を知りたい場合は、当社のニュースレターをご購読ください。 テレグラムチャンネル. そこは快適で、ビジネスに向いており、コードへの愛情が ❤️
