खोज…


परिचय

सी ++ प्रोजेक्ट में सीएमके का उपयोग अगर सही तरीके से किया जाता है, तो प्रोग्रामर को प्लेटफॉर्म पर कम, प्रोग्राम के संस्करण की संख्या और वास्तविक कार्यक्रम पर अधिक ध्यान केंद्रित करने की अनुमति मिल सकती है। CMake के साथ आप प्रीप्रोसेसर टैग्स को परिभाषित कर सकते हैं जो कि किस प्लेटफ़ॉर्म या किसी अन्य प्रीप्रोसेसर टैग्स की आसान जाँच के लिए आपको वास्तविक प्रोग्राम में आवश्यकता हो सकती है। जैसे कि वर्जन नंबर जिसे एक लॉग सिस्टम में लीवरेज किया जा सकता है।

वाक्य - विन्यास

  • #define preprocessor_name "@ cmake_value @"

टिप्पणियों

यह समझना महत्वपूर्ण है कि हर प्रीप्रोसेसर को config.h.in में परिभाषित नहीं किया जाना चाहिए। प्रीप्रोसेसर टैग आमतौर पर केवल प्रोग्रामर के जीवन को आसान बनाने के लिए उपयोग किया जाता है और विवेक के साथ उपयोग किया जाना चाहिए। यदि आपको अलग-अलग सिस्टम पर अपरिभाषित व्यवहार में चलना पड़ सकता है, तो इसे परिभाषित करने से पहले यदि कोई प्रीप्रोसेसर टैग पहले से मौजूद है, तो आपको शोध करना चाहिए।

C ++ उपयोग के लिए संस्करण संख्या को परिभाषित करने के लिए CMake का उपयोग करना

संभावनाएं अनंत हैं। जैसा कि आप इस अवधारणा का उपयोग अपने बिल्ड सिस्टम से संस्करण संख्या को खींचने के लिए कर सकते हैं; जैसे कि git और उस संस्करण संख्या को अपनी परियोजना में उपयोग करें।

CMakeLists.txt

cmake_minimum_required(VERSION 3.8)
project(project_name VERSION "0.0.0")

configure_file(${path to configure file 'config.h.in'}
include_directories(${PROJECT_BINARY_BIN}) // this allows the 'config.h' file to be used throughout the program

...

config.h.in

#ifndef INCLUDE_GUARD
#define INCLUDE_GUARD

#define PROJECT_NAME "@PROJECT_NAME@"
#define PROJECT_VER  "@PROJECT_VERSION@"
#define PROJECT_VER_MAJOR "@PROJECT_VERSION_MAJOR@"
#define PROJECT_VER_MINOR "@PROJECT_VERSION_MINOR@"
#define PTOJECT_VER_PATCH "@PROJECT_VERSION_PATCH@"

#endif // INCLUDE_GUARD

main.cpp

#include <iostream>
#include "config.h"
int main()
{
    std::cout << "project name: " << PROJECT_NAME << " version: " << PROJECT_VER << std::endl;
    return 0;
}

उत्पादन

project name: project_name version: 0.0.0


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow