2010-09-06 14 views
7

मैं सीएमके के साथ एक ग्रहण सीडीटी प्रोजेक्ट जेनरेट करना चाहता हूं जहां परिणामस्वरूप ग्रहण परियोजना में परिभाषित बिल्ड प्रकार आईडीई के भीतर से चुनिंदा बिल्ड कॉन्फ़िगरेशन के रूप में होते हैं।सीएमके ग्रहण बिल्ड कॉन्फ़िगरेशन

उदाहरण के लिए:

if(CMAKE_CONFIGURATION_TYPES) 
    set(CMAKE_CONFIGURATION_TYPES PRODUCT_A PRODUCT_B) 
    set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING 
    "Reset the configurations to what we need" 
    FORCE) 
endif() 

SET(CMAKE_C_FLAGS_PRODUCT_A 
    "-DF_ENABLE_FEATURE_A -DF_ENABLE_FEATURE_B 
    ) 

SET(CMAKE_C_FLAGS_PRODUCT_B 
    "-DF_ENABLE_FEATURE_A 
    ) 

ऊपर दृष्टिकोण का उपयोग करना, एक दृश्य स्टूडियो परियोजना जनरेटर मुझे configuriatons निर्माण PRODUCT_A product_B चयन करने के लिए देता है और सही ढंग से सक्रिय कोड पर प्रकाश डाला गया।

यदि मैं एक ग्रहण परियोजना उत्पन्न करता हूं तो बिल्ड कॉन्फ़िगरेशन नहीं है।

ग्रहण परियोजनाओं के लिए मैं इसे कैसे काम करूं?

उत्तर

4

संक्षिप्त उत्तर: आप नहीं करते हैं।

ग्रहण सीडीटी जनरेटर जेनरेट मेकफ़ाइल के चारों ओर एक रैपर बनाता है। मेकफ़ाइल-आधारित जनरेटर को बहु-कॉन्फ़िगरेशन के रूप में नहीं बनाया जा सकता है।

आप अलग द्विआधारी पेड़ का उपयोग करें (ध्यान दें कि दोनों एक ही स्रोत पेड़ से देख सकते हैं), और विकल्प की तरह कुछ का उपयोग करने के उत्पाद एक और/या उत्पाद बी सक्षम करना होगा:

OPTION(PRODUCT_A "Build product A." OFF) 
OPTION(PRODUCT_B "Build product B." OFF) 
IF(PRODUCT_A AND PRODUCT_B) 
    MESSAGE(SEND_ERROR "Cannot build both product A and B at the same time.") 
ENDIF() 

IF(PRODUCT_A) 
    SET(CMAKE_C_FLAGS 
    "${CMAKE_C_FLAGS} -DF_ENABLE_FEATURE_A -DF_ENABLE_FEATURE_B" 
) 
ENDIF() 

IF(PRODUCT_B) 
    SET(CMAKE_C_FLAGS 
    "${CMAKE_C_FLAGS} -DF_ENABLE_FEATURE_A" 
) 
ENDIF() 
संबंधित मुद्दे