Visual Studio对安卓CMake 工程的支持

[原文发表地址] Support for Android CMake projects in Visual Studio

[原文发表时间] 2015/12/16 3:16 AM

CMake 是一个跨平台工程生成工具,它能让共享的C++跨平台代码在其他多种IDE环境和工程中重复利用。

Visual Studio中,我们做了一些改变,使CMAKE能支持Android工具链。有了这一改变,你只需做最小的改动,就可以将现有的CMAKE工程变成Android目标平台的工程,你可以在Visual Studio打开你的工程,充分感受到我们丰富的Android集成开发环境的好处。

我们已经在努力做微软CMake 开源github资源库,也打算和Kitware合作将这些改变集成在公开的CMake资源库。

但是当下,下面是你们需要做的一些步骤。

前提条件,请在Visual Studio上安装Android MDD包

获取CMake

在Microsoft CMake 资源库的VCMDDSndroid下面。

  •  请点击“Download ZIP”按钮 ,下载离线备份的VCMDDAndroid,并解压。

          

  • https://cmake.org/download/安装CMake3.4.1,这是编译CMake做必须的,推荐Win32 安装器。
  •  在解压缩的文件目录下,运行 cmake –G “Visual Studio 14” ,这个会从根目录下启动CMake ,大概会花15分钟左右。
  • 这样将会使用Visual Studio 2015生成工具,和生成Visual Studio工程。目的是在Visual Studio中编译CMake。

            

在CMake运行后,在out文件中应该有Visual Studio 工程。

  • 运行 msbuild cmake.sln 这将会编译CMake, 你可以在VS2015 开发者命令提示符运行msbuild。 这样编译的二进制文件将会在bin\Debug文件夹下。
  • 或者将输出文件夹路径添加到 PATH ,或者确保从这个目录下运行cmake.exe ,这样运行它会启动修改CMake版本, 而不是之前安装的那个。

            

编译你的CMake工程

下面的例子会解释生成器的功能以及CMake的变量。

运行cmake -G “Visual Studio 14 ARM” –DCMAKE_SYSTEM_NAME=VCMDDAndroid 去生成Visual Studio工程。

在生成x86的解决方案,你可以删除修饰符ARM。

下面是CMakeLists.txt的内容,你在下面可以找到这个简单例子的链接。

cmake_minimum_required(VERSION 3.4)
project (Sample)
add_library(Sample STATIC sample.cpp)

# demo of the variables being set when VCMDDAndroid is targeted
if(VC_MDD_ANDROID AND VC_MDD_ANDROID_VERSION MATCHES "1.0")
message("VCMDDAndroid 1.0")
else()
if(CMAKE_GENERATOR MATCHES "Visual Studio 14" AND CMAKE_SYSTEM_NAME MATCHES "VCMDDAndroid")
message("VCMDDAndroid")
endif()
endif()

# optional, demo of the VC_MDD_ANDROID* properties
set_property(TARGET Sample PROPERTY VC_MDD_ANDROID_USE_OF_STL "c++_static")
set_property(TARGET Sample PROPERTY VC_MDD_ANDROID_API_LEVEL "android-21")

CMake工具链文件是不需要的,这个例子中自带了。 我们非常关心它的易用性,并确保用户只需写入最少的信息。唯一所需的信息只有系统的名字。

在Visual Studio中打开和编译这个已生成的文件。

已知的问题和局限性

1. 现阶段,我们只支持库,对象,静态链接库和动态链接库。我们不支持用于bootstrapper的封装工程(如Java),我们正计划尽快支持它。

2. 我们目前支持x86 和 ARM 架构,我们正计划不久的将来支持x64 和 AMD64。

下一阶段?

未来,我们会添加对x64和AMD64架构,以及packaging project support.我们很快回合Kitware合作,将这些集成到公开的CMake资源库。

我们希望你门可以发现这些对CMake工程的帮助。我们也很期待你们关于进一步提升的反馈和意见。 关于这方面的更多消息,请通过VCBlog和我们的Visual C++跨平台页面直接联系我们。

 

sample.zip