2015-08-15 5 views
21

This page में चर के एक अच्छे सारांश शामिल हैं सीएमके पहले से ही हमारे लिए परिभाषित करता है। मुझे लगता है कि कुछ चर समान हैं। उदाहरण के लिए CMAKE_SOURCE_DIR और PROJECT_SOURCE_DIR का उदाहरण लें। वे वही हैं, उस फ़ोल्डर का जिक्र करते हुए जहां शीर्ष स्तर CMakeLists.txt परिभाषित किया गया है। तो मेरा सवाल है: क्या उनके बीच सूक्ष्म अंतर है? धन्यवाद।क्या CMAKE_SOURCE_DIR और PROJECT_SOURCE_DIR सीएमके में समान हैं?

उत्तर

34

इन चर के बीच एक अंतर है। CMAKE_SOURCE_DIR वास्तव में उस फ़ोल्डर को संदर्भित करता है जहां शीर्ष-स्तर CMakeLists.txt परिभाषित किया गया है। हालांकि, PROJECT_SOURCE_DIR सीएमके लिस्ट.txt के फ़ोल्डर को संदर्भित करता है जिसमें सबसे हालिया project() कमांड शामिल है।

उदाहरण के लिए, कहें कि आपके पास Outer नामक एक शीर्ष-स्तरीय प्रोजेक्ट है और इसमें Inner नामक अपनी परियोजना के साथ एक उपनिर्देशिका है। Outer के CMakeLists.txt है:

project(Outer) 
add_subdirectory(Inner) 

और Inner की:

project(Inner) 
फिर इन CMakeLists फ़ाइलों की दोनों में

, CMAKE_SOURCE_DIROuter के स्रोत निर्देशिका के पास भेजेगा। लेकिन Outer के लिए भी यही वही है, यह Inner के मामले में नहीं है। Inner का PROJECT_SOURCE_DIR उपनिर्देशिका है जिसमें इसके CMakeLists.txt हैं।

यह अंतर सभी PROJECT_<var> बनाम CMAKE_<var> चर पर लागू होता है।

+4

क्या आप 'CMAKE_CURRENT_SOURCE_DIR' के साथ अंतर भी जोड़ सकते हैं? – Svalorzen

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