सीएमके तारों में सूचियों के रूप में व्याख्या की जा सकती है। नियम सरल है: सूची बनाने के लिए अर्धविरामों पर स्ट्रिंग को विभाजित करें। उदाहरण के लिए, स्ट्रिंग मान one;two;three
को तीन तत्वों की सूची के रूप में माना जा सकता है: one
, two
, और three
।
कमांड का आह्वान करने के लिए आप कमांड नाम और कोष्ठक के बीच कुछ शब्द लिखते हैं। हालांकि, ये शब्द एक-एक-एक फैशन में प्राप्त आदेशों के अनुरूप हैं। प्रत्येक शब्द शून्य या अधिक तर्क बन जाता है, और सभी तर्क एक साथ मिलकर मिलते हैं। जब तक कोई शब्द उद्धृत नहीं किया जाता है, इसे एक सूची के रूप में माना जाता है और इसे कई तर्कों में विस्तारित किया जाता है। एक उद्धृत शब्द हमेशा एक तर्क बन जाता है।
उदाहरण के लिए, मान लेते हैं कि X
बाध्य है one;two;three
को, Y
रिक्त स्ट्रिंग के लिए बाध्य है, और Z
foo
के लिए बाध्य है। निम्न आदेश मंगलाचरण तीन शब्द है, लेकिन आदेश चार तर्क प्राप्त करता है:
some_command(${X} ${Y} ${Z})
# The command receives four arguments:
# 1. one
# 2. two
# 3. three
# 4. foo
हम शब्दों को उद्धृत होता है, तो आदेश तीन तर्कों प्राप्त होता है:
some_command("${X}" "${Y}" "${Z}")
# The command receives three arguments:
# 1. one;two;three
# 2. (the empty list)
# 3. foo
अपने मूल पर लौटने के लिए प्रश्न: message
कमांड तर्कों की एक अलग संख्या प्राप्त कर सकता है। यह अपने सभी तर्क लेता है, उन्हें एक स्ट्रिंग में एक साथ जोड़ता है, और तब उस स्ट्रिंग को प्रिंट करता है। किसी अज्ञात कारण के लिए यह शून्य तर्क स्वीकार नहीं करता है, हालांकि।
व्यवहार message
कई तर्क के साथ है, तो आप इसे के साथ एक एकल उद्धृत तर्क का उपयोग करते हैं, बहुत उपयोगी नहीं है:
set(SOURCES foo.c hoo.h)
message(${SOURCES}) # prints foo.cfoo.h
message("${SOURCES}") # prints foo.c;foo.h
इसके अलावा, जब set
कई तर्क प्राप्त करता है यह तर्क अलग की एक स्ट्रिंग बनाता है अर्धविराम से। चर को तब उस स्ट्रिंग पर सेट किया जाता है।
भविष्य के संदर्भ के लिए एक उपयोगी वाक्यविन्यास विवरण: http://www.cmake.org/Wiki/CMake/Language_Syntax – raek
पृष्ठ का बहुत उपयोगी है। मेरे रूप में नए आने वालों के लिए एक मुख्य संदर्भ :) –