Har*_*ish 8 c++ swig cmake android-gradle-plugin android-studio-2.2
我正在使用Android Studio 2.2 Beta 3,我的测试项目使用CMake构建混合C++和Java应用程序.JNI接口由SWIG生成.这意味着我想在externalNativeBuild和JavaCompile gradle任务之前生成SWIG包装器; 即我的CMakeLists.txt指定SWIG生成的cpp包装器文件,我的java代码导入SWIG生成的java包装器文件.
为了确保SWIG运行并在任何任务之前生成必要的包装器文件,我在app/build.gradle文件中指定了以下内容
project.afterEvaluate {
preBuild.dependsOn("runSwig")
}
Run Code Online (Sandbox Code Playgroud)
当我使用命令从命令行运行时
./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)
我没有遇到任何问题,正如预期的那样,我的任务"runSwig"在任何其他任务之前运行
:app:runSwig
:app:preBuild
:app:preDebugBuild
<blah blah more tasks>
:app:externalNativeBuildDebug
Run Code Online (Sandbox Code Playgroud)
但问题是当项目首次在Android Studio中打开时,看起来外部本机构建在runSwig之前被调用,我得到了错误
CMake Error at CMakeLists.txt:79 (add_library):
Cannot find source file:
../../../wrap.cxx
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
FAILURE: Build failed with an exception.
Run Code Online (Sandbox Code Playgroud)
在我使用命令行OR进行汇编之前,错误不会消失,从我的CMakeLists.txt中删除wrap.cxx文件,并在swig成功运行至少一次后重新添加它.
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |