2014-09-24 3 views
5

मैं वर्तमान में अपने ऐप के लिए एंड्रॉइड पर एक संकलन समस्या पर अटक गया हूं।शीर्षलेख फ़ाइल केवल विशिष्ट अनुवाद इकाई में नहीं मिली

मैं ndk-build के साथ मेरे देशी पुस्तकालय के संकलन के दौरान निम्नलिखित त्रुटि मिलती है:

:

BackgroundDisplayConfiguration.h:12:23: fatal error: glm/glm.hpp: 
No such file or directory 
#include <glm/glm.hpp> 
         ^

मुझे क्या पहेली है कि मैं इस शीर्ष लेख केवल मेरे Android.mk निम्नलिखित तरीके से पुस्तकालय के लिए एक पथ निर्दिष्ट किया है

LOCAL_CPPFLAGS += -I../../glm/include 

और यह पथ मौजूद है और यह सही है, लेकिन इसके अलावा यदि मैं इस पथ को गड़बड़ करता हूं तो मुझे अन्य फ़ाइलों में एक ही त्रुटि मिलती है जिसमें glm.hpp शामिल है। जब पथ सही होता है, केवल यह फ़ाइल एक त्रुटि उत्पन्न करती है, और मुझे समझ में नहीं आता क्यों। कोई संकेतक?

संपादित करें: ठीक है, यह और भी परेशान है। प्रत्येक फ़ाइल के लिए प्रत्येक कंपाइलर कमांड में विकल्प शामिल होता है, लेकिन स्विग द्वारा उत्पन्न बड़े रैपर के लिए कंपाइलर कमांड पर नहीं (जो मेरे library_native_wrap.o आउटपुट करता है), और यही वह जगह है जहां यह त्रुटि उत्पन्न करता है ... अच्छा, यह कम से कम मनाया जाता है व्यवहार।

+0

मैं एंड्रॉयड NDK के बारे में पता नहीं है, लेकिन शायद यह केवल 'केवल preprocessing के लिए LOCAL_CPPFLAGS' का उपयोग करता है, और नहीं है कंपाइलर झंडे में झंडे जोड़ें? क्या आपने सेटिंग सेट करने का प्रयास किया है 'LOCAL_CXXFLAGS'? –

+1

@ जोचिमपिलबोर्ग वेल, [एंड्रॉइड मेकफ़ाइल के लिए प्रलेखन] (http://www.kandroid.org/ndk/docs/ANDROID-MK.html) बताता है कि 'LOCAL_CXXFLAGS'' LOCAL_CPPFLAGS' के लिए उपनाम है, और यहां तक ​​कि और अधिक है कि इसे बहिष्कृत किया जाना चाहिए। वास्तव में मुझे क्या पहेली है कि यह केवल एक विशिष्ट फ़ाइल पर होता है, और दूसरों के लिए काम करता है ... – JBL

+0

बस कोशिश करने के लिए, मैंने 'LOCAL_CXXFLAGS' और' LOCAL_CFLAGS' दोनों में अपना विकल्प शामिल किया और न ही इसे ठीक किया मुसीबत। – JBL

उत्तर

3

तो मुझे इसके लिए एक समाधान मिला, भले ही यह सही नहीं लगता है।

दरअसल, मुझे पता चला कि मेरी लाइब्रेरी के प्रत्येक स्रोत को संकलित करते समय, कंपाइलर कमांड में वास्तव में विकल्प शामिल था, लेकिन फिर, स्विग के आउटपुट को संकलित करते समय (उस बड़ी अनूठी सी ++ रैपर फ़ाइल), विकल्प नहीं था अब और वहाँ

मुझे LOCAL_EXPORT_C_INCLUDES में अपना शामिल पथ जोड़कर इसे सही करने का एक तरीका मिला।

किसी कारण से

, LOCAL_CPPFLAGS जब आवरण संकलन के लिए इस्तेमाल नहीं कर रहे हैं ...

+0

@jww हाहा, मैं कहने जा रहा था "किसी अन्य संबंधित धागे में, किसी ने वास्तव में पूरे सिस्टम को _broken_ के रूप में योग्यता प्राप्त की"। फिर एहसास हुआ [** यह आप था **] (http://stackoverflow.com/questions/25663989/warning-android-mk-non-system- पुस्तकालय-in-linker-flags/25665219#comment40107927_25665219) वास्तव में .. :) – JBL

संबंधित मुद्दे