खोज…


वाक्य - विन्यास

  • 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



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow