cmake
लक्ष्य बनाएं
खोज…
वाक्य - विन्यास
- add_executable (target_name [EXCLUDE_FROM_ALL] source1 [source2 ...])
- add_library (lib_name [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
निष्पादन योग्य
एक निष्पादन योग्य बनाने वाले निर्माण लक्ष्य को बनाने के लिए, एक को add_executable
कमांड का उपयोग करना चाहिए:
add_executable(my_exe
main.cpp
utilities.cpp)
यह एक निर्माण लक्ष्य, जैसे पैदा make my_exe
जीएनयू मेकअप के लिए, कॉन्फ़िगर संकलक की उचित आमंत्रण के साथ एक निष्पादन का उत्पादन करने के my_exe
दो स्रोत फ़ाइलों से main.cpp
और utilities.cpp
।
डिफ़ॉल्ट रूप से, सभी निष्पादन योग्य लक्ष्य BUILD_ALL
all
लक्ष्य ( all
GNU मेक, MSVC के लिए BUILD_ALL
) में BUILD_ALL
।
किसी निष्पादन योग्य को डिफ़ॉल्ट all
लक्ष्य के साथ बनाए जाने से बाहर करने के लिए, कोई वैकल्पिक पैरामीटर EXCLUDE_FROM_ALL
लक्ष्य नाम के ठीक बाद जोड़ सकता है:
add_executable(my_optional_exe EXCLUDE_FROM_ALL main.cpp)
पुस्तकालय
लाइब्रेरी बनाने वाला बिल्ड लक्ष्य बनाने के लिए, add_library
कमांड का उपयोग करें:
add_library(my_lib lib.cpp)
CMake वेरिएबल BUILD_SHARED_LIBS
जब भी कोई स्थिर ( OFF
) या साझा ( ON
) लाइब्रेरी cmake .. -DBUILD_SHARED_LIBS=ON
, उदाहरण के लिए cmake .. -DBUILD_SHARED_LIBS=ON
का उपयोग करके cmake .. -DBUILD_SHARED_LIBS=ON
। हालाँकि, आप लक्षित नाम के बाद STATIC
या SHARED
जोड़कर एक साझा या स्थिर पुस्तकालय बनाने के लिए स्पष्ट रूप से सेट कर सकते हैं:
add_library(my_shared_lib SHARED lib.cpp) # Builds an shared library
add_library(my_static_lib STATIC lib.cpp) # Builds an static library
वास्तविक आउटपुट फ़ाइल सिस्टम के बीच भिन्न होती है। उदाहरण के लिए, यूनिक्स प्रणालियों पर एक साझा पुस्तकालय को आमतौर पर libmy_shared_library.so
कहा जाता है, लेकिन विंडोज पर यह my_shared_library.dll
और my_shared_library.lib
।
add_executable
तरह, इसे all
लक्ष्य से बाहर करने के लिए स्रोत फ़ाइलों की सूची से पहले EXCLUDE_FROM_ALL
जोड़ें:
add_library(my_lib EXCLUDE_FROM_ALL lib.cpp)
पुस्तकालय, जिन्हें रनटाइम पर लोड करने के लिए डिज़ाइन किया गया है (उदाहरण के लिए प्लगिन या एप्लिकेशन जैसे dlopen
का उपयोग करके), को SHARED
/ STATIC
बजाय MODULE
उपयोग करना चाहिए:
add_library(my_module_lib MODULE lib.cpp)
उदाहरण के लिए, विंडोज पर, वहाँ नहीं एक आयात (होगा .lib
) फ़ाइल, क्योंकि प्रतीकों सीधे में निर्यात किया जाता है .dll
।