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

如何在cmake中引用静态库(.a),第1张

1.头文件

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

2.库文件

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

3.引用

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

1.编译报错“undefined reference to `pthread_create'”

解决办法:引入pthread库

2.编译报错“libcrypto.a undefined reference to symbol 'dlclose'”

解决办法: add -ldl after libcrypto and libssl in your link command.

您好,很高兴为您解答:

在使用cmake时,CMakeLists.txt的写法如下: add_library( ${MODULE_NAME} SHARED ${CMAKE_SOURCE_DIR}/builttime.c #要生成一个so,至少要包含一个源文件,实在没有可以把库的编译时间戳打到这儿。 ) target_link_libraries( ${MODULE_NAME} ${${MODULE_NAME}_EXTRA_LDFLAGS} "-Wl,--whole-archive" #告诉编译器,

从这里开始,所有的库的内容都包含到so中 ${LOCAL_MODULES} #可以是以源代码生成的静态库 ${PREBUILT_MODULES} #可以是预先生成的静态库 "-Wl,--no-whole-archive" #告诉编译器,从这里开始,以后的库的内容不用都包含到so中 )

cmake使用

cmake是什么?

一.单目录单文件的编写方式

1.创建CMAKELISTS.TXT文件

     cmake_minimum_required(VERSION 3.17)   --版本号设置

     PROJECT(工程名)

  ---生成可执行文件

    ADD_EXECUTABLE(  目标文件(可执行文件)   依赖文件(.cpp))

二.单目录多个源文件的方式

需要添加AUX_SOURCE_DIRECTORY(./   DIR_SRCS)   ------将某个目录下的文件存储在某个变量内

需要修改的是ADD_EXEXUTABLE(目标文件     ${DIR_SRCS} )

三.多文件多目录----非标准与标准的方式

工程结构:

1.先编写里面的CMakeLists.txt文件

    AUX_SOURCE_DIRECTORY(. DIR_LIB_SRCS)

    add_library(MyLib ${DIR_LIB_SRCS})#静态库

    #add_library(MyLib  SHARED ${DIR_LIB_SRCS})  #动态库

2.编写外层CMAKELISTS.txt


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11422008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存