2012-04-10 6 views
10

जारी करता है ऐसा लगता है कि हमें प्रत्येक बिल्ड प्रकार (डीबग/रिलीज) के लिए अलग फ़ोल्डर बनाने, प्रत्येक पर सेमेक चलाने, और डीबग/रिलीज कॉन्फ़िगरेशन के लिए अलग मेकफ़ाइल उत्पन्न करने की आवश्यकता है। क्या सीएमकेक का उपयोग करके एक एकल मेकफ़ाइल बनाना संभव है जो एक ही समय में डीबग/रिलीज कॉन्फ़िगरेशन दोनों का समर्थन करता है और जब हम वास्तव में "मेक" चलाते हैं जो इंटरमीडिएट और अंतिम उत्पादों (जैसे डीएलएस, एक्सई) के लिए अलग फ़ोल्डर्स बनाते हैं।क्या सीएमके एक एकल मेकफ़ाइल उत्पन्न कर सकता है जो डीबग और

उत्तर

8

जहां तक ​​मुझे पता है, इसे बिल्ड स्क्रिप्ट के एक सेट का उपयोग करके हासिल नहीं किया जा सकता है। तो फिर ऐसा

build/ 
build/debug 
build/release 

:

$ cd build 
$ 
$ cd build/debug 
$ cmake -DCMAKE_BUILD_TYPE=Debug ../.. 
$ make 
$ 
$ cd ../release 
$ cmake -DCMAKE_BUILD_TYPE=Release ../.. 
$ make 

आवश्यक हैं, तो आप एक और निर्माण स्क्रिप्ट जैसे build निर्देशिका में जोड़ सकते हैं लेकिन, आप क्या कर सकते अपने कार्य क्षेत्र के दो उप-निर्देशिका है:

#!/bin/sh 
cd debug && make && cd .. 
cd release && make && cd .. 
+0

दृश्य स्टूडियो एसएलएन फ़ाइल के बारे में क्या, क्या यह केवल डीबग उत्पन्न करता है या केवल कॉन्फ़िगरेशन जारी करता है या क्या यह दोनों .sln फ़ाइल में दोनों का समर्थन करता है? – user243655

+1

@ user243655: ऐसा लगता है कि यह कई विन्यास उत्पन्न करता है: 'डीबग', 'रिलीज',' मिनीसाइजरेल 'और' रिलीविथडेबइन्फो '। –

+0

जानकारी के लिए बहुत बहुत धन्यवाद। – user243655

1

यह ADD_CUSTOM_TARGET कमांड का उपयोग करके हासिल किया जा सकता है।

ADD_CUSTOM_TARGET(debug 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the debug mode.") 

ADD_CUSTOM_TARGET(release 
    COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR} 
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all 
    COMMENT "Creating the executable in the release mode.") 

फिर, cmake साथ विन्यस्त करने के बाद, आप डिबग लक्ष्य बनाने के लिए make debug चला सकते हैं: उदाहरण के लिए, यदि आप अपने makefile में दोनों डिबग और रिहाई लक्ष्य जोड़ना चाहते हैं, तो निम्न अपने CMakeLists.txt फ़ाइल में जोड़ने के लिए और एक ही निर्देशिका में रिलीज लक्ष्य बनाने के लिए make release चलाएं।

संबंधित मुद्दे