Andoird CMake: trying to autocreate Fluid files

This commit is contained in:
Matthias Melcher 2019-01-17 00:49:44 +01:00
parent 563baced13
commit 111985665d
3 changed files with 42 additions and 3 deletions

View File

@ -26,17 +26,23 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# instead of the fltk symlink, which is bad for SVN
add_subdirectory(${FLTK_DIR}/ "${CMAKE_CURRENT_BINARY_DIR}/lib" EXCLUDE_FROM_ALL)
# run FLuid commands if any
@ANDROID_FLUID_COMMANDS@
# copy source files
@ANDROID_APP_COPY_SOURCES@
# now build app's shared lib
add_library(
test_@ANDROID_APP_NAME@ SHARED
HelloAndroid.cxx)
@ANDROID_APP_SOURCES@)
target_include_directories(
test_@ANDROID_APP_NAME@ PRIVATE
${FLTK_DIR}/
${FLTK_IDE_DIR}/ )
# Export ANativeActivity_onCreate(),

# Export ANativeActivity_onCreate()
# Refer to: https://github.com/android-ndk/ndk/issues/381.
set(CMAKE_SHARED_LINKER_FLAGS
"${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")

View File

@ -100,8 +100,39 @@ configure_file(
macro(CREATE_ANDROID_IDE_FOR_TEST NAME SOURCES LIBRARIES)
message(STATUS "Creating Android IDE for ${NAME}")
set (ANDROID_APP_NAME ${NAME})
set (srcs)
set (ANDROID_APP_SOURCES)
set (ANDROID_APP_COPY_SOURCES)
set (ANDROID_FLUID_COMMANDS)
set (flsrcs) # fluid source files
foreach(src ${SOURCES})
if ("${src}" MATCHES "\\.fl$")
list(APPEND flsrcs ${src})
string(REGEX REPLACE "(.*).fl" \\1 basename ${src})
string(APPEND ANDROID_FLUID_COMMANDS
"add_custom_command( OUTPUT \"${basename}.cxx\" \"${basename}.h\"\n"
" OUTPUT \"${basename}.cxx\" \"${basename}.h\"\n"
" COMMAND fluid -c \"\${CMAKE_CURRENT_SOURCE_DIR}/${src}\"\n"
" DEPENDS ${src}\n"
" MAIN_DEPENDENCY ${src}\n"
")\n\n"
)
set(src_cxx ${basename}.cxx)
else ()
list(APPEND srcs ${src})
set(src_cxx ${src})
endif ("${src}" MATCHES "\\.fl$")
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/AndroidStudio/${ANDROID_APP_NAME}/src/main/cpp/")
# FIXME: Unix only for older version of CMake
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
"${CMAKE_CURRENT_SOURCE_DIR}/${src}"
"${CMAKE_BINARY_DIR}/AndroidStudio/${ANDROID_APP_NAME}/src/main/cpp/${src}")
string(APPEND ANDROID_APP_SOURCES " ${src_cxx}\n")
endforeach(src)
configure_file(
"${CMAKE_SOURCE_DIR}/CMake/Android/app.build.gradle.in"
"${CMAKE_BINARY_DIR}/AndroidStudio/${ANDROID_APP_NAME}/build.gradle"
@ -114,7 +145,6 @@ macro(CREATE_ANDROID_IDE_FOR_TEST NAME SOURCES LIBRARIES)
@ONLY
)
configure_file(
"${CMAKE_SOURCE_DIR}/CMake/Android/Roboto-Regular.ttf"
"${CMAKE_BINARY_DIR}/AndroidStudio/${ANDROID_APP_NAME}/src/main/assets/fonts/Roboto-Regular.ttf"

View File

@ -44,6 +44,9 @@ if (OPTION_CREATE_ANDROID_STUDIO_IDE)
CREATE_ANDROID_IDE_FOR_TEST(arc arc.cxx fltk)
CREATE_ANDROID_IDE_FOR_TEST(hello hello.cxx fltk)
CREATE_ANDROID_IDE_FOR_TEST(input input.cxx fltk)
CREATE_ANDROID_IDE_FOR_TEST(inactive inactive.fl fltk)
# FIXME: fails because in the current schmeme, we can't find the .h files
#CREATE_ANDROID_IDE_FOR_TEST(keyboard "keyboard.cxx;keyboard_ui.fl" fltk)
endif (OPTION_CREATE_ANDROID_STUDIO_IDE)
#######################################################################