early-access version 2853
This commit is contained in:
1
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/.gitignore
vendored
Executable file
1
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/.gitignore
vendored
Executable file
@@ -0,0 +1 @@
|
||||
build
|
13
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/CMakeLists.txt
vendored
Executable file
13
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/CMakeLists.txt
vendored
Executable file
@@ -0,0 +1,13 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
# if -DVCPKG_TARGET_ANDROID=ON is specified when invoking cmake, load cmake/vcpkg_android.cmake
|
||||
# !!! Important: place this line before calling project() !!!
|
||||
if (VCPKG_TARGET_ANDROID)
|
||||
include("cmake/vcpkg_android.cmake")
|
||||
endif()
|
||||
|
||||
project(test)
|
||||
|
||||
find_package(jsoncpp CONFIG REQUIRED)
|
||||
add_library(my_lib my_lib.cpp)
|
||||
target_link_libraries(my_lib JsonCpp::JsonCpp)
|
99
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/cmake/vcpkg_android.cmake
vendored
Executable file
99
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/cmake/vcpkg_android.cmake
vendored
Executable file
@@ -0,0 +1,99 @@
|
||||
#
|
||||
# vcpkg_android.cmake
|
||||
#
|
||||
# Helper script when using vcpkg with cmake. It should be triggered via the variable VCPKG_TARGET_ANDROID
|
||||
#
|
||||
# For example:
|
||||
# if (VCPKG_TARGET_ANDROID)
|
||||
# include("cmake/vcpkg_android.cmake")
|
||||
# endif()
|
||||
#
|
||||
# This script will:
|
||||
# 1 & 2. check the presence of needed env variables: ANDROID_NDK_HOME and VCPKG_ROOT
|
||||
# 3. set VCPKG_TARGET_TRIPLET according to ANDROID_ABI
|
||||
# 4. Combine vcpkg and Android toolchains by setting CMAKE_TOOLCHAIN_FILE
|
||||
# and VCPKG_CHAINLOAD_TOOLCHAIN_FILE
|
||||
|
||||
# Note: VCPKG_TARGET_ANDROID is not an official Vcpkg variable.
|
||||
# it is introduced for the need of this script
|
||||
|
||||
if (VCPKG_TARGET_ANDROID)
|
||||
|
||||
#
|
||||
# 1. Check the presence of environment variable ANDROID_NDK_HOME
|
||||
#
|
||||
if (NOT DEFINED ENV{ANDROID_NDK_HOME})
|
||||
message(FATAL_ERROR "
|
||||
Please set an environment variable ANDROID_NDK_HOME
|
||||
For example:
|
||||
export ANDROID_NDK_HOME=/home/your-account/Android/Sdk/ndk-bundle
|
||||
Or:
|
||||
export ANDROID_NDK_HOME=/home/your-account/Android/android-ndk-r21b
|
||||
")
|
||||
endif()
|
||||
|
||||
#
|
||||
# 2. Check the presence of environment variable VCPKG_ROOT
|
||||
#
|
||||
if (NOT DEFINED ENV{VCPKG_ROOT})
|
||||
message(FATAL_ERROR "
|
||||
Please set an environment variable VCPKG_ROOT
|
||||
For example:
|
||||
export VCPKG_ROOT=/path/to/vcpkg
|
||||
")
|
||||
endif()
|
||||
|
||||
|
||||
#
|
||||
# 3. Set VCPKG_TARGET_TRIPLET according to ANDROID_ABI
|
||||
#
|
||||
# There are four different Android ABI, each of which maps to
|
||||
# a vcpkg triplet. The following table outlines the mapping from vcpkg architectures to android architectures
|
||||
#
|
||||
# |VCPKG_TARGET_TRIPLET | ANDROID_ABI |
|
||||
# |---------------------------|----------------------|
|
||||
# |arm64-android | arm64-v8a |
|
||||
# |arm-android | armeabi-v7a |
|
||||
# |x64-android | x86_64 |
|
||||
# |x86-android | x86 |
|
||||
#
|
||||
# The variable must be stored in the cache in order to successfully the two toolchains.
|
||||
#
|
||||
if (ANDROID_ABI MATCHES "arm64-v8a")
|
||||
set(VCPKG_TARGET_TRIPLET "arm64-android" CACHE STRING "" FORCE)
|
||||
elseif(ANDROID_ABI MATCHES "armeabi-v7a")
|
||||
set(VCPKG_TARGET_TRIPLET "arm-android" CACHE STRING "" FORCE)
|
||||
elseif(ANDROID_ABI MATCHES "x86_64")
|
||||
set(VCPKG_TARGET_TRIPLET "x64-android" CACHE STRING "" FORCE)
|
||||
elseif(ANDROID_ABI MATCHES "x86")
|
||||
set(VCPKG_TARGET_TRIPLET "x86-android" CACHE STRING "" FORCE)
|
||||
else()
|
||||
message(FATAL_ERROR "
|
||||
Please specify ANDROID_ABI
|
||||
For example
|
||||
cmake ... -DANDROID_ABI=armeabi-v7a
|
||||
|
||||
Possible ABIs are: arm64-v8a, armeabi-v7a, x64-android, x86-android
|
||||
")
|
||||
endif()
|
||||
message("vcpkg_android.cmake: VCPKG_TARGET_TRIPLET was set to ${VCPKG_TARGET_TRIPLET}")
|
||||
|
||||
|
||||
#
|
||||
# 4. Combine vcpkg and Android toolchains
|
||||
#
|
||||
|
||||
# vcpkg and android both provide dedicated toolchains:
|
||||
#
|
||||
# vcpkg_toolchain_file=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
|
||||
# android_toolchain_file=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
|
||||
#
|
||||
# When using vcpkg, the vcpkg toolchain shall be specified first.
|
||||
# However, vcpkg provides a way to preload and additional toolchain,
|
||||
# with the VCPKG_CHAINLOAD_TOOLCHAIN_FILE option.
|
||||
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE $ENV{ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake)
|
||||
set(CMAKE_TOOLCHAIN_FILE $ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake)
|
||||
message("vcpkg_android.cmake: CMAKE_TOOLCHAIN_FILE was set to ${CMAKE_TOOLCHAIN_FILE}")
|
||||
message("vcpkg_android.cmake: VCPKG_CHAINLOAD_TOOLCHAIN_FILE was set to ${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
|
||||
|
||||
endif(VCPKG_TARGET_ANDROID)
|
37
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/compile.sh
vendored
Executable file
37
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/compile.sh
vendored
Executable file
@@ -0,0 +1,37 @@
|
||||
# 1. Install the library via vcpkg
|
||||
# This install jsoncpp for the 4 android target ABIs and for the host computer.
|
||||
# see the correspondence between ABIs and vcpkg triplets in the table below:
|
||||
#
|
||||
# |VCPKG_TARGET_TRIPLET | ANDROID_ABI |
|
||||
# |---------------------------|----------------------|
|
||||
# |arm64-android | arm64-v8a |
|
||||
# |arm-android | armeabi-v7a |
|
||||
# |x64-android | x86_64 |
|
||||
# |x86-android | x86 |
|
||||
$VCPKG_ROOT/vcpkg install \
|
||||
jsoncpp \
|
||||
jsoncpp:arm-android \
|
||||
jsoncpp:arm64-android \
|
||||
jsoncpp:x86-android \
|
||||
jsoncpp:x64-android
|
||||
|
||||
|
||||
# 2. Test the build
|
||||
#
|
||||
# First, select an android ABI
|
||||
# Uncomment one of the four possibilities below
|
||||
#
|
||||
android_abi=armeabi-v7a
|
||||
# android_abi=x86
|
||||
# android_abi=arm64-v8a
|
||||
# android_abi=x86_64
|
||||
|
||||
rm -rf build
|
||||
mkdir build && cd build
|
||||
|
||||
# DVCPKG_TARGET_ANDROID will load vcpkg_android.cmake,
|
||||
# which will then load the android + vcpkg toolchains.
|
||||
cmake .. \
|
||||
-DVCPKG_TARGET_ANDROID=ON \
|
||||
-DANDROID_ABI=$android_abi
|
||||
make
|
8
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/my_lib.cpp
vendored
Executable file
8
externals/vcpkg/docs/examples/vcpkg_android_example_cmake_script/my_lib.cpp
vendored
Executable file
@@ -0,0 +1,8 @@
|
||||
#include <json/json.h>
|
||||
|
||||
int answer()
|
||||
{
|
||||
Json::Value meaning_of;
|
||||
meaning_of["everything"] = 42;
|
||||
return meaning_of["everything"].asInt();
|
||||
}
|
Reference in New Issue
Block a user