美文网首页Android-NDK/JNI
Android Stuido:使用CMake编译多个C/C++文

Android Stuido:使用CMake编译多个C/C++文

作者: Celcnu | 来源:发表于2019-04-02 22:10 被阅读283次

    Abstract

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

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

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


    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++文

        本文链接:https://www.haomeiwen.com/subject/eqnnbqtx.html