美文网首页UNIX
如何在cmake中引用静态库(.a)

如何在cmake中引用静态库(.a)

作者: zhongwcool | 来源:发表于2019-08-21 15:30 被阅读0次

    常怀感恩之心
            ——鲁迅

    脚本参考

    cmake_minimum_required(VERSION 3.14)
    project(myclion C)
    
    set(CMAKE_C_STANDARD 99)
    
    include_directories(include)
    
    link_directories(lib)
    
    find_package(Threads REQUIRED)
    
    add_executable(myclion 
            src/main.c
            #src/example/10-at-a-time.c
            )
    
    target_link_libraries(myclion 
            curl
            ssl -ldl
            crypto -ldl
            Threads::Threads
            )
    

    脚本说明

    1、标准引入就三步:

    1.头文件
    include存放的是编译库文件生成的头文件集合,比如curl目录,目录中都是.h文件,添加方式如下:

    include_directories(include)
    

    2.库文件
    lib是存放库文件的目录,形如libxxx.so或libxxx.a形式的文件,添加方式如下:

    link_directories(lib)
    

    3.引用
    库的引用可以直接取libxxx.a中的xxx部分,如下的curl、ssl、crypto就是:

    target_link_libraries(myclion 
            curl
            ssl -ldl
            crypto -ldl
            Threads::Threads
            )
    

    2、此例的意外问题及解决办法

    1.编译报错“undefined reference to `pthread_create'”
    解决办法:引入pthread库

    find_package(Threads REQUIRED) #添加内容一
    
    target_link_libraries(myclion 
            *
            *
            *
            Threads::Threads  #添加内容二
            )
    

    2.编译报错“libcrypto.a undefined reference to symbol 'dlclose'”
    解决办法:add -ldl after libcrypto and libssl in your link command.

    target_link_libraries(myclion 
            *
            ssl -ldl
            crypto -ldl
            *
            )
    

    相关文章

      网友评论

        本文标题:如何在cmake中引用静态库(.a)

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