Abstract
上一篇文章基本介绍了Android Studio中链接C/C++代码的方法,本文进一步介绍如何处理具有多个.c/.cpp/.h文件的复杂project。有过linux编程经验的同学知道,我们编写的一堆.c/.cpp/.h文件,需要写一个Makefile文件指明编译链接的规则,同时还会指定一些编译选项、链接库等等。那么Android Studio中是如何实现的呢?
Step1 参照上文添加C/C++代码
添加完成后,文件目录结构如图:
![](https://img.haomeiwen.com/i16548729/4d5b455dab93c996.png)
Step2 CMakeLists.txt中添加代码路径
将所有需要的.c/.cpp文件路径添加到CMakeLists.txt文件中,.h文件则是通过指定头文件目录。具体代码如下:
- 指定代码文件路径:
add_library( # Sets the name of the library.
seadp_jni #c/cpp代码将要编译成为so库的名称,java代码加载库文件要用这个名称
SHARED #动态库
src/main/cpp/seadp/channel_management.cpp #将所有c/c++代码路径添加到下面
src/main/cpp/seadp/channel_packet.cpp
src/main/cpp/seadp/message.cpp
src/main/cpp/seadp/packetqueue.cpp
src/main/cpp/seadp/rawsocket_message.cpp
src/main/cpp/seadp/seanet_channel.cpp
src/main/cpp/seadp/seanet_socket.c
src/main/cpp/seadp/tunnelmessage.cpp
src/main/cpp/seadp/
src/main/jni/seadp_jni.c
)
- 指定头文件目录:
include_directories(
${CMAKE_SOURCE_DIR}/src/main/cpp/seadp/include #h文件目录
)
Step3 编译选项和链接规则
- 不同于Makefile的书写,CMake不需要显式指明链接规则。
- 链接库例如 -pthread等也不需要显式指明。
- 编译选项
例如:指定C/C++编译器类型?
#设置编译器类型
#C编译器 CMAKE_C_FLAGS_DEBUG
#C++编译器 CMAKE_CXX_FLAGS_DEBUG
SET(CMAKE_CXX_FLAGS_DEBUG "-g -std=c++11")
Ref
https://blog.csdn.net/tabactivity/article/details/78364296
注
笔者水平有限,欢迎留言交流!
网友评论