25 Star 64 Fork 30

元谷 / sxtwl_cpp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
如何构建.md 4.35 KB
一键复制 编辑 原始数据 按行查看 历史

本工程使用cmake做为项目管理,以utf8做为代码格式(所以在window上,vs2015以下的版本编译前,先要做格式转换).

基本环境:

获取代码

使用git将下载本工程代码(如果这步不会,也可以直接下载zip代码:https://github.com/yuangu/sxtwl_cpp/archive/master.zip) git clone https://github.com/yuangu/sxtwl_cpp.git

使用GUI操作界面,以window为例 (小白推荐)

  1. 打开cmake(或者cmake-gui),在"where is ths source code"里写上您刚刚下载的代码目录。在“where to build the binaries”填上编译目录(我一般是在代码目录里加一个build子目录)。如图所示:

cmake示意图

  1. 点击左下角的 "Generate" 按钮(1),弹出一个对话框。选择您的IDE(这里选择的是VS2015)(2),按Finish关闭弹窗(3),如图所示:

cmake示意图2

  1. 依次点击旁边的 "Configure"按钮 及 "Open Project"按钮(至此,您的可以编译出一个lib库出来了),如图所示:

cmake示意图3

  1. 如需要编译例子的话,您只需要增加一个参数即可。点击率 “Add Entry”按钮(1),在弹窗里的Name中输入 "SXTWL_BUILD_EXAMPLES"(2),勾选Value值(3).按OK关闭弹窗,再点击"Configure"按钮,(注更多的编译标识参数请参考后面的编译参数表格)如图所示: cmake示意图4

cmake命令行

$ mkdir build
$ cd build
$ cmake .. -DSXTWL_BUILD_EXAMPLES=1  
$ cmake --build . 

注:

  • 如果需要指定IDE或者构建工具可以加-G参数,如cmake .. -G "Unix Makefiles"
  • 使用 cmake .. -G 可以查看-G后面可以接的参数值(反正我是不记忆的,要查一直接使用这个命令)。
  • -D可以接的参数可以查看 《cmake编译参数查询表》

cmake编译参数查询表

语言 宏参数 说明
lua SXTWL_WRAPPER_LUA
python SXTWL_WRAPPER_PYTHON
C# SXTWL_WRAPPER_CSHARP
php5 SXTWL_WRAPPER_PHP5 php5 已放弃支持
php7 SXTWL_WRAPPER_PHP5 php7
java SXTWL_WRAPPER_JAVA 如果在android中使用,请在externalNativeBuild 下的cmake加上 arguments "-DSXTWL_WRAPPER_JAVA=1"
golang SXTWL_WRAPPER_GO
c语言 SXTWL_WRAPPER_C cmake只提供生成动态库

python用户

直接进入项目根目录下的python目录执行

python setup.py install 

android平台构建方法

  1. 将代码拷贝至android工程目录下(或者直接把代码clone至代码目录下),如图所示: cmake示意图

  2. 刷新gradle(还有一点,最好手动删除目录下的.externalNativeBuild目录)。如图所示: cmake示意图

  3. 最后需要在java代码加入

System.loadLibrary("sxtwl_java");

另外Android独立编译方法:

$ set ANDROID_SDK=D:/android/sdk
$ set ANDROID_NDK=D:/android/android-ndk-r14b
$ set ANDROID_ABI=armeabi
$ set ANDROID_CMAKE=%ANDROID_SDK%/cmake/3.6.4111459/bin/cmake.exe
$ set ANDROID_NINJA=%ANDROID_SDK%/cmake/3.6.4111459/bin/ninja.exe

$ %ANDROID_CMAKE% -DANDROID_ABI=%ANDROID_ABI%   \
-DANDROID_PLATFORM=android-16  \
-DCMAKE_BUILD_TYPE=Release   \
-DANDROID_NDK=%ANDROID_NDK%    \
-DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions   \
-DCMAKE_TOOLCHAIN_FILE=%ANDROID_NDK%/build/cmake/android.toolchain.cmake    \
-DCMAKE_MAKE_PROGRAM=%ANDROID_NINJA% -G "Ninja"    \
-DCONSOLE=1   \
-DSXTWL_WRAPPER_JAVA=1 ..  

$ %ANDROID_CMAKE% --build .

注: ANDROID_ABI 可取值: armeabi/armeabi-v7a/x86/mips/armeabi-v7a with NEON/armeabi-v7a with VFPV3/armeabi-v6 with VFP/arm64-v8a/x86_64/mips64

提示:如果遇到 Could NOT SWIG (missing: SWIG_DIR)的话,可以在cmake命令指定swig的路径: -DSWIG_EXECUTABLE=d:/swigwin-3.0.12/swig

IOS平台编译方法(未验证)

$ cd build

$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.cmake \
-DIOS_PLATFORM=OS  \
-DCMAKE_BUILD_TYPE=Release \
-GXcode

$ cmake --build .
C++
1
https://gitee.com/yuangu/sxtwl.git
git@gitee.com:yuangu/sxtwl.git
yuangu
sxtwl
sxtwl_cpp
master

搜索帮助