Cmake का उपयोग करके dlib को संकलित करने के निर्देशों के बाद (यहां ) एक स्थैतिक dlib पुस्तकालय उत्पन्न करता है:

cd examples
mkdir build
cd build
cmake ..
cmake --build . --config Release

मैं cmake को एक साझा (.so) लाइब्रेरी बनाने के लिए कैसे निर्देश दे सकता हूं?

9
ManiAm 30 नवम्बर 2015, 13:27

2 जवाब

सबसे बढ़िया उत्तर

यदि आप .so फ़ाइल बनाना चाहते हैं तो ऐसा करें:

cd dclib/dlib
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=1 ..
make
sudo make install

एक यूनिक्स प्रणाली पर, जो dlib सिस्टम को विस्तृत रूप से स्थापित करेगा। इसका मतलब है .so फ़ाइल और भी हेडर फ़ाइलों को स्थापित करना ताकि आप g++ main.cpp -ldlib जैसी कमांड के साथ प्रोग्राम संकलित कर सकें। अंत में, लिनक्स सिस्टम पर आपको कोई भी नई साझा लाइब्रेरी स्थापित करने के बाद sudo ldconfig चलाना होगा।

हालांकि, अधिकांश उपयोगकर्ताओं के लिए, मैं उदाहरण के रूप में दिखाए गए सीएमके का उपयोग करने की सलाह दूंगा। इस तरह से आप जब चाहें डिबगिंग मोड को सक्षम या अक्षम कर सकते हैं और परियोजना को वितरित करना आसान बना सकते हैं, स्रोत रूप और संकलित रूप दोनों। उदाहरण के लिए, यदि आप खिड़कियों पर संकलन करना चाहते हैं तो साझा लाइब्रेरी निश्चित रूप से जाने का रास्ता नहीं है। इसके अलावा, उदाहरण के रूप में दिखाए गए CMake का उपयोग करना हमेशा किसी भी सेटअप के बिना सीधे तरीके से काम करेगा।

21
Davis King 18 सितंबर 2018, 11:52

dlib-shared के अनुसार, dlib के स्टैंडअलोन (examples से नहीं) का निर्माण भी dlib-shared नामक साझा पुस्तकालय बनाता है:

mkdir shared_build # Build directory can be any
cd shared_build
cmake ..
cmake --build . --config Release
make install # Install library for make it acessible for others

उदाहरणों में इस पुस्तकालय का उपयोग करने के लिए, आपको dlib पुस्तकालय की परिभाषा को अपने examples/CMakeLists.txt include(../dlib/cmake) से पहले जोड़ना होगा।

उदाहरण / CMakeLists.txt :

...
PROJECT(examples)

add_library(dlib SHARED IMPORTED) # Imported(!) dlib target
set_target_properties(dlib PROPERTIES IMPORTED_LOCATION "<full path to the installed dlib-shared library file>")

# Now it is safe to include other dlib infrustucture - it won't build dlib again.
include(../dlib/cmake)
...
0
Tsyvarev 30 नवम्बर 2015, 11:52