Browse Source

Add 'ANDROID_GUI' target property to mark Android applications

Also add a 'CMAKE_ANDROID_GUI' variable to set the property default
so a project can easily make all executables Android applications.
An Android application executable file has the same extension as a
shared library (.so).
pull/121/head
Brad King 11 years ago
parent
commit
9a4df52aa1
  1. 1
      Help/manual/cmake-properties.7.rst
  2. 1
      Help/manual/cmake-variables.7.rst
  3. 9
      Help/prop_tgt/ANDROID_GUI.rst
  4. 5
      Help/variable/CMAKE_ANDROID_GUI.rst
  5. 16
      Source/cmTarget.cxx

1
Help/manual/cmake-properties.7.rst

@ -79,6 +79,7 @@ Properties on Targets
:maxdepth: 1
/prop_tgt/ALIASED_TARGET
/prop_tgt/ANDROID_GUI
/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY_CONFIG
/prop_tgt/ARCHIVE_OUTPUT_DIRECTORY
/prop_tgt/ARCHIVE_OUTPUT_NAME_CONFIG

1
Help/manual/cmake-variables.7.rst

@ -204,6 +204,7 @@ Variables that Control the Build
.. toctree::
:maxdepth: 1
/variable/CMAKE_ANDROID_GUI
/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY
/variable/CMAKE_AUTOMOC_MOC_OPTIONS
/variable/CMAKE_AUTOMOC

9
Help/prop_tgt/ANDROID_GUI.rst

@ -0,0 +1,9 @@
ANDROID_GUI
-----------
Build an executable as an application package on Android.
When this property is set to true the executable when built for Android
will be created as an application package. This property is initialized
by the value of the :variable:`CMAKE_ANDROID_GUI` variable if it is set
when a target is created.

5
Help/variable/CMAKE_ANDROID_GUI.rst

@ -0,0 +1,5 @@
CMAKE_ANDROID_GUI
-----------------
Default value for the :prop_tgt:`ANDROID_GUI` target property of
executables. See that target property for additional information.

16
Source/cmTarget.cxx

@ -446,6 +446,10 @@ void cmTarget::SetMakefile(cmMakefile* mf)
this->SetPropertyDefault("VISIBILITY_INLINES_HIDDEN", 0);
}
if(this->TargetTypeValue == cmTarget::EXECUTABLE)
{
this->SetPropertyDefault("ANDROID_GUI", 0);
}
if(this->TargetTypeValue == cmTarget::SHARED_LIBRARY
|| this->TargetTypeValue == cmTarget::MODULE_LIBRARY)
{
@ -3504,7 +3508,10 @@ const char* cmTarget::GetSuffixVariableInternal(bool implib) const
case cmTarget::EXECUTABLE:
return (implib
? "CMAKE_IMPORT_LIBRARY_SUFFIX"
: "CMAKE_EXECUTABLE_SUFFIX");
// Android GUI application packages store the native
// binary as a shared library.
: (this->IsAndroid && this->GetPropertyAsBool("ANDROID_GUI")?
"CMAKE_SHARED_LIBRARY_SUFFIX" : "CMAKE_EXECUTABLE_SUFFIX"));
default:
break;
}
@ -3528,7 +3535,12 @@ const char* cmTarget::GetPrefixVariableInternal(bool implib) const
? "CMAKE_IMPORT_LIBRARY_PREFIX"
: "CMAKE_SHARED_MODULE_PREFIX");
case cmTarget::EXECUTABLE:
return (implib? "CMAKE_IMPORT_LIBRARY_PREFIX" : "");
return (implib
? "CMAKE_IMPORT_LIBRARY_PREFIX"
// Android GUI application packages store the native
// binary as a shared library.
: (this->IsAndroid && this->GetPropertyAsBool("ANDROID_GUI")?
"CMAKE_SHARED_LIBRARY_PREFIX" : ""));
default:
break;
}

Loading…
Cancel
Save