CMake का परिचय: यह क्या है और क्यों ज़रूरी है
CMake (Cross-Platform Make) एक शक्तिशाली, ओपन-सोर्स, क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर बिल्ड ऑटोमेशन सिस्टम है। पारंपरिक Makefile के विपरीत, CMake सीधे प्रोजेक्ट को बिल्ड नहीं करता, बल्कि सरल कॉन्फ़िगरेशन फ़ाइलों CMakeLists.txt के आधार पर नेटिव टूल्स (Make, Ninja, Visual Studio, Xcode) के लिए बिल्ड फ़ाइलें जनरेट करता है।
CMake की ज़रूरत क्यों है?
- क्रॉस-प्लेटफ़ॉर्म सपोर्ट: एक ही कोड को Windows, Linux और macOS पर बिना कॉन्फ़िगरेशन बदले बिल्ड किया जा सकता है।
- डिपेंडेंसी मैनेजमेंट: बाहरी लाइब्रेरीज़ (Boost, OpenCV, Qt आदि) को खोजने और जोड़ने की बिल्ट-इन सुविधा।
- लचीलापन: विभिन्न प्रोजेक्ट जनरेटर (Visual Studio, Xcode, Ninja, Unix Makefiles) के लिए सपोर्ट।
- मॉड्यूलरिटी: लाइब्रेरीज़ (स्टैटिक और डायनामिक), एक्ज़ीक्यूटेबल फ़ाइलें और टेस्ट बनाने की क्षमता।
- IDE इंटीग्रेशन: आधुनिक IDE (CLion, VS Code, Qt Creator) में CMake के लिए बिल्ट-इन सपोर्ट है।
CMake C++ प्रोजेक्ट्स के लिए डी-फैक्टो स्टैंडर्ड बन गया है। Google (TensorFlow, Chrome), Microsoft (VS Code), KDE, LLVM/Clang जैसी दिग्गज कंपनियाँ इसका उपयोग करती हैं।
CMake इंस्टॉलेशन
Python लाइब्रेरीज़ के विपरीत, CMake pip के ज़रिए इंस्टॉल नहीं होता। यह एक स्वतंत्र एप्लिकेशन है। आइए मुख्य ऑपरेटिंग सिस्टम के लिए इंस्टॉलेशन देखें:
Windows
- आधिकारिक वेबसाइट से इंस्टॉलर डाउनलोड करें (Windows के लिए .msi या .zip वर्शन चुनें)।
- इंस्टॉलेशन चलाएँ। "Add CMake to the system PATH for all users" विकल्प को ज़रूर चेक करें।
- इंस्टॉलेशन के बाद कमांड लाइन में जाँच करें:
cmake --version
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install cmake
cmake --version
macOS (Homebrew)
brew install cmake
cmake --version
इंस्टॉलेशन की जाँच
इंस्टॉलेशन के बाद टर्मिनल में यह कमांड चलाएँ:
cmake --version
# आउटपुट कुछ इस तरह होना चाहिए:
# cmake version 3.27.0
त्वरित शुरुआत: CMake पर पहला प्रोजेक्ट
CMake का उपयोग करके एक सरल "Hello World" प्रोजेक्ट बनाते हैं।
प्रोजेक्ट की संरचना
my_project/
├── CMakeLists.txt
└── main.cpp
main.cpp फ़ाइल
#include <iostream>
int main() {
std::cout << "Hello, CMake!" << std::endl;
return 0;
}
CMakeLists.txt फ़ाइल
cmake_minimum_required(VERSION 3.10)
project(HelloWorld VERSION 1.0 LANGUAGES CXX)
add_executable(hello main.cpp)
प्रोजेक्ट बिल्ड करना
mkdir build
cd build
cmake ..
cmake --build .
./hello
व्याख्या:
cmake_minimum_required— CMake का न्यूनतम आवश्यक वर्शन सेट करता है।project— प्रोजेक्ट का नाम और भाषा (C++ के लिए CXX) परिभाषित करता है।add_executable— सोर्स फ़ाइलों से एक्ज़ीक्यूटेबल फ़ाइल बनाता है।
CMake के मुख्य तरीके और फ़ंक्शन
1. cmake_minimum_required()
विवरण: प्रोजेक्ट को बिल्ड करने के लिए आवश्यक CMake के न्यूनतम वर्शन को सेट करता है। यदि CMake का वर्शन निर्दिष्ट से कम है, तो एक एरर दिखाई देगी।
पैरामीटर:
VERSION— वर्शन फ़ॉर्मेट major.minor[.patch[.tweak]] मेंFATAL_ERROR— वैकल्पिक, वर्शन मेल न होने पर फ़ैटल एरर देता है
उदाहरण:
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
2. project()
विवरण: प्रोजेक्ट का नाम और उसके पैरामीटर परिभाषित करता है। इसे cmake_minimum_required() के बाद ही कॉल किया जाना चाहिए।
पैरामीटर: