मैं libpng का उपयोग करने वाले अनुप्रयोग के लिए एक सीएमके पदानुक्रम बनाने की कोशिश कर रहा हूं। Libpng zlib की आवश्यकता है। शीर्ष स्तर CMakeLists.txt मेंसेमेक पदानुक्रम zlib, libpng और मेरा स्वयं का ऐप
/development
CMakeLists.txt
/zlib-1.2.5
CMakeLists.txt <- provided by zlib
-sources-
-build of zlib?-
/libpng154
CMakeLists.txt <- provided by libpng
-sources-
-build of libpng?-
/myapp
CMakeLists.txt
-sources-
/build
-build of myapp-
-build of zlib?-
-build of libpng?-
... और फिर,, की तरह कुछ जगह:
एक CMakeLists.txt के बाद से दोनों zlib के साथ वितरित किया जाता है और मेरा पहला विचार libpng निम्नलिखित संरचना बनाने के लिए था :
project(everything)
...
add_subdirectory(zlib-1.2.5)
add_subdirectory(libpng154)
add_subdirectory(myapp)
...
लेकिन कोई भाग्य नहीं। Libpng का CMakeLists.txt एक find_package (ZLIB ...) करता है लेकिन यह नहीं जानता कि कहां देखना है। यह मैक ओएस पर "स्थापित" zlib से/usr द्वारा हल किया जा सकता है। लेकिन यह विंडोज़ में काम नहीं करेगा।
तो मैंने सोचा कि मैं उपनिर्देशिका में पुन: सेवा नहीं करूंगा। बस संकलित करें और स्वतंत्र रूप से liblng और libpng का निर्माण करें और अपने स्वयं के ऐप में घुसपैठ करने से पहले एक find_package (PNG ...) करें (कम से कम zlib संकलित और libpng (प्रदान किए गए CMakeLists.txt के माध्यम से) काम करता है, कम से कम मैक ओएस पर लेकिन फिर से, केवल इसलिए क्योंकि zlib/usr पर स्थापित है)।
project(everything)
...
find_package(PNG...)
add_subdirectory(myapp)
...
कोई भाग्य नहीं, find_package (PNG ...) विफल रहता है। मुझे नहीं पता कि find_package (पीएनजी ...) को कैसे पता चलेगा कि libpng लाइब्रेरी को अभी कहां देखना है। उदाहरण के लिए बढ़ावा देने के लिए, आप "BOOST_ROOT" चर सेट कर सकते हैं। Libpng के लिए कुछ सिमुलेटर है? के रूप में BOOST_ROOT के साथ मामला है
सधन्यवाद,
डैनियल डेक्कर्स
आमतौर पर, अगर find_package विफल रहता है, तो आप CMakeCache फ़ाइल को संपादित कर सकते हैं और वहां शामिल और लाइब्रेरी पथ दर्ज कर सकते हैं। यदि आप सीएमके के लिए जीयूआई का उपयोग करते हैं तो यह सबसे आसान है। – LiMuBei