2014-09-24 19 views
5

Şu anda uygulamanız için Android'de derleme sorunuyla karşılaştım.Başlık dosyası sadece belirli bir çeviri biriminde bulunamadı

Ben ndk-build ile benim yerli kütüphanenin derleme sırasında aşağıdaki hatayı alıyorum:

: Kafamı kurcalayan ne

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

bu başlığın benim Android.mk şu şekilde sadece kütüphane için bir yol belirlenmiş olmasıdır

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

ve bu yol var ve doğrudur, ancak bu yolu dağıtırsam, glm.hpp'u içeren diğer dosyalarda aynı hatayı alırım. Yol doğru olduğunda, sadece bu dosya bir hata verir ve nedenini anlamıyorum. Herhangi bir işaretçi?

DÜZENLEME: Tamam, bu daha da şaşırtıcı. Include seçeneği her dosya için her derleyici komutunda görünür, ancak swig tarafından üretilen büyük sarıcı için derleyici komutunda (library_native_wrap.o çıktısını alır) görünür ve bu bir hata verir ... Bu, en azından gözlemlenenleri açıklar. davranışı.

+0

Ben Android NDK bilmem ama belki sadece sadece ön işlenmesi için 'LOCAL_CPPFLAGS' kullanır ve yapmayan bayrakları derleyici bayraklarına ekleyin? Ayarlamayı denediniz mi? 'LOCAL_CXXFLAGS'? –

+1

@JoachimPileborg Eh, [android makefile için belgeler] (http://www.kandroid.org/ndk/docs/ANDROID-MK.html) 'LOCAL_CXXFLAGS' 'LOCAL_CPPFLAGS' için bir takma ad olduğunu ve hatta Kullanımdan kaldırılmasının daha fazla olacağı. Beni gerçekten şaşırtan şey, sadece belirli bir dosyada olduğu ve başkaları için çalıştığı gözüküyor ... – JBL

+0

Sadece denemek için, hem "LOCAL_CXXFLAGS" hem de "LOCAL_CFLAGS" için ekleme seçeneğimi ekledim. sorun. – JBL

cevap

3

Bu nedenle, tam olarak doğru olmamasına rağmen, bunun için bir çözüm buldum.

Gerçekten de, kitaplığımın her kaynağını derlerken, derleyici komutunun gerçekten de ekleme seçeneği olduğunu öğrendim, ancak daha sonra, (bu büyük benzersiz C++ sarmalayıcı dosyası) swig çıktısını derlerken, seçenek orada artık.

LOCAL_EXPORT_C_INCLUDES'a ekleme yolumu ekleyerek bunu düzeltmenin bir yolunu buldum. sarmalayıcı derlerken, LOCAL_CPPFLAGS kullanılmaz Nedense

...

+0

@jww Haha, "Bir başka ilgili iş parçacığında, birisi aslında tüm sistemi _broken_ olarak nitelendirdi" diyecektim. Daha sonra gerçekleşmiş [** siz miydiniz?] (Http://stackoverflow.com/questions/25663989/warning-android-mk-non-system-libraries-in-linker-flags/25665219#comment40107927_25665219) aslında .. :) – JBL