Jump to content

  • Log In with Google      Sign In   
  • Create Account


Android, C++, C4droid, and makefiles


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 mynameisnafe   Members   -  Reputation: 252

Like
0Likes
Like

Posted 26 October 2012 - 10:59 AM

Hello !

Okay here's the deal!

The NativeActivity example that comes with the NDK - awesome! Now I can build an app without dealing with Java.

What I'd like to know is a simple thing, but alas I am still noobing my way around Linux distros, to be honest.

How do I take this makefile, for a single C file, which links to GLES, and turn it into a makefile for n * .cpp and .h files?

all: libcube.so
libcube.so: cube.o
  $(CC) -o libcube.so cube.o -shared -lEGL -lGLESv1_CM -lm
clean:
  rm libcube.so cube.o

The thing that's got me stuck is the lack of a mention of the NativeActivity.c file

For example, I just wanna stick a bunch of stuff from that C file into a header file for now!

Any help would be greatly appreciated!

Oooh by the by, just to really make you screwface, this makefile came from an example that came with the C4Droid App (Though I've seen it in the NDK) - If I have to compile on C4droid then so be it.. in fact, I'd prefer it - the app that creates apps, I mean, how awesome is that?

Many thanks!

Sponsor:

#2 frob   Moderators   -  Reputation: 19861

Like
1Likes
Like

Posted 26 October 2012 - 11:16 AM

Make files are a complete programming language in themselves.

There are automatic rules in place that know .o files are generated from their source files. Just add the new .o file to the list of dependencies and the magic should happen.

Details for make and how the rules work are available in the documentation.
Check out my personal indie blog at bryanwagstaff.com.

#3 gfxgangsta   Members   -  Reputation: 550

Like
2Likes
Like

Posted 26 October 2012 - 11:21 AM

This is an Android.mk makefile taken from the NATIVE_ACTIVITY.HTML help doc:

8/ Create an Android.mk file in the jni/ directory of your project to describe your native module
to the build system. An Android.mk file is essentially a snippet of a GNU Make file. For
example:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_native_module
LOCAL_SRC_FILES := my_native_code.c
include $(BUILD_SHARED_LIBRARY)


To add more .c or .cpp files, you can add them to the LOCAL_SRC_FILES section like so:

LOCAL_SRC_FILES := my_native_code.c my_native_code_2.c my_native_code_3.c my_native_code_N.c


OR like so:

LOCAL_SRC_FILES := my_native_code.c \
my_native_code_2.c \
my_native_code_3.c \
my_native_code_N.c




There's also the "wildcard" keyword so you can avoid listing all the files manually:

http://stackoverflow.com/questions/8350878/using-makes-wildcard-function-in-android-mk


Hope this helps!

#4 mynameisnafe   Members   -  Reputation: 252

Like
0Likes
Like

Posted 27 October 2012 - 12:42 PM

This is an Android.mk makefile taken from the NATIVE_ACTIVITY.HTML help doc:


How did I not go and find that? *faceplam*

Two beaut answers guys thank you!

Hope this style of makefile compiles with C4Droid, I shall try it out! :)

#5 mynameisnafe   Members   -  Reputation: 252

Like
0Likes
Like

Posted 27 October 2012 - 01:26 PM

I cant seem to make the magic happen within c4droid, could somebody show me how to extend the makefile i've put above, just to include another .h and .cpp?

I did try on Mint and managed to compile a .cpp and its .h, which was cool :) however I didnt have a LOCAL_SOURCE_FILES field..

Sorry to be picky / a git.

Thanks!




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS