Android Stuido:使用CMake编译多个C/C++文件(1)

Abstract

上一篇文章基本介绍了Android Studio中链接C/C++代码的方法,本文进一步介绍如何处理具有多个.c/.cpp/.h文件的复杂project。有过linux编程经验的同学知道,我们编写的一堆.c/.cpp/.h文件,需要写一个Makefile文件指明编译链接的规则,同时还会指定一些编译选项、链接库等等。那么Android Studio中是如何实现的呢?

Step1 参照上文添加C/C++代码

添加完成后,文件目录结构如图:


Android Stuido:使用CMake编译多个C/C++文件(1)_第1张图片

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

笔者水平有限,欢迎留言交流!

你可能感兴趣的:(Android Stuido:使用CMake编译多个C/C++文件(1))