首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用CMake一次性创建静态库和共享库?

CMake是一个跨平台的开源构建工具,它可以帮助开发者管理和构建项目。使用CMake一次性创建静态库和共享库可以通过以下步骤实现:

  1. 创建CMakeLists.txt文件:在项目根目录下创建一个名为CMakeLists.txt的文件,该文件用于描述项目的构建规则。
  2. 设置项目及最低CMake版本:在CMakeLists.txt文件中,首先设置项目的名称和支持的最低CMake版本。
  3. 设置项目及最低CMake版本:在CMakeLists.txt文件中,首先设置项目的名称和支持的最低CMake版本。
  4. 添加源文件:使用add_library命令将源文件添加到项目中。可以通过设置STATICSHARED参数来指定创建静态库还是共享库。
  5. 添加源文件:使用add_library命令将源文件添加到项目中。可以通过设置STATICSHARED参数来指定创建静态库还是共享库。
  6. 设置库的输出类型:使用set_target_properties命令设置库的输出类型,可以通过设置LIBRARY_OUTPUT_DIRECTORY参数来指定输出目录。
  7. 设置库的输出类型:使用set_target_properties命令设置库的输出类型,可以通过设置LIBRARY_OUTPUT_DIRECTORY参数来指定输出目录。
  8. 生成构建规则:使用target_link_libraries命令将库与其他依赖项进行链接,并使用add_executable命令生成可执行文件。
  9. 生成构建规则:使用target_link_libraries命令将库与其他依赖项进行链接,并使用add_executable命令生成可执行文件。
  10. 生成构建系统:在项目根目录下创建一个名为build的目录,进入该目录并执行以下命令生成构建系统。
  11. 生成构建系统:在项目根目录下创建一个名为build的目录,进入该目录并执行以下命令生成构建系统。
  12. 构建项目:执行以下命令进行项目构建。
  13. 构建项目:执行以下命令进行项目构建。

完成上述步骤后,CMake将会根据CMakeLists.txt文件中的规则创建静态库和共享库,并生成可执行文件。

注意:以上步骤仅为一般的使用CMake创建静态库和共享库的方法,具体的实现方式可能会因项目结构和需求而有所不同。在实际使用中,可以根据具体情况进行调整和扩展。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云CVM(云服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云COS(对象存储):https://cloud.tencent.com/product/cos
  • 腾讯云SCF(云函数):https://cloud.tencent.com/product/scf
  • 腾讯云VPC(私有网络):https://cloud.tencent.com/product/vpc
  • 腾讯云CDN(内容分发网络):https://cloud.tencent.com/product/cdn
  • 腾讯云SSL证书:https://cloud.tencent.com/product/ssl
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CMake 教你如何链接共享

在之前作者已经整理了两篇相关文章,如下: 《CMake,大型项目采用的构建工具》 《CMake 静态与动态构建》 今天的文章是基于上一篇的文章的写到的工程继续扩展的,如果对CMake制作动态静态不是很了解的小伙伴...《动态链接》 在上一节中我们制作了一个librice.so的动态,并进行了安装,所以我们直接使用这个动态。...接下来弄一个例程来讲解如何链接动态,例程结构如下: $ tree -L 3 . ├── build ├── CMakeLists.txt └── src ├── CMakeLists.txt...《静态链接》 静态链接只需要在上面的例子中修改一点点内容就可以了。.../main test sample rice func $ 有上面的结果看,mian依赖的是静态

1.5K10

linux如何查看so已加载_cmake生成静态

Linux程序运行找不到动态.so文件的三种解决办法 方法一:添加环境变量 子招数1. 添加当前用户当前终端的环境变量-临时 export LD_LIBRARY_PATH=/home/czd/......#.so file path 使其生效 source /etc/profile 如不能生效,请重启 方法二:复制so文件到lib路径 linux系统的so一般存储与“/usr/lib/”路径中,可将动态复制到该路径中...进入目录内,创建*.conf文件,文件名随意,扩展名必须为.conf cd /etc/ld.so.conf.d/ vim libmy.conf 步骤4....执行命令时期生效 sudo ldconfig 程序在运行时寻找so就会到添加的目录中寻找。 原创文章,转载请注明出处 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

5.4K30
  • Xcode 创建.aframework静态

    最近因为项目中的聊天SDK,需要封装成静态,所以实践了一下创建静态的步骤,做下记录。 介绍 从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。静态动态两种。...静态与动态的区别 静态动态是相对编译期运行期的:静态在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态;而动态在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,...创建.a静态 第一步,新建工程。一般使用工程名就使用的名称,比如我这里用FMDB来创建静态,我的工程名就取名为FMDB,创建的.a静态就是libFMDB.a。 ?...使用静态模板新建工程.png ? 创建的工程.png 第二步,删除系统默认创建的【FMDB.h】【FMDB.m】文件,导入需要打包的源文件。 ?...创建framework静态 第一步,新建项目 ? 新建项目.png 第二步,删除系统默认创建的【FMDB.h】【FMDB.m】文件,导入需要打包的源文件。 ?

    3.2K31

    【Android NDK 开发】Android Studio 使用 CMake 导入静态 ( CMake 简介 | 构建脚本路径配置 | 引入静态 | 指定静态路径 | 链接动态 )

    CMake 简介 II . Android Studio 中 CMake 引入静态流程 III . 指定 CMake 最小版本号 IV . 导入函数 ( 静态 / 动态 ) 编译配置 V ....CMake 与 Android.mk : Google 逐渐放弃了对 Android.mk 的支持 , 目前新项目推荐使用 CMake 构建本地 , 旧的项目建议将 Android.mk 转为 CMake...特别注意 : 使用这种方法引入动态 , 在 6.0 以上的系统是无法使用的 , 推荐使用 set() 设置 -L 参数的方式引入动态 ; # 设置变量 # CMAKE_CXX_FLAGS 表示会将..., 导入静态 , 相当于预编译静态 # 后续还需要设置导入路径 , 配合该配置使用 add_library( #...博客资源 ---- CSDN 博客地址 : 【Android NDK 开发】Android Studio 使用 CMake 导入静态 ( CMake 简介 | 构建脚本路径配置 | 引入静态 | 指定静态路径

    2.7K40

    Linux的静态共享详解及实例

    在Linux下分为静态共享(也叫动态),当然Windows下也有静态(.lib)动态(.dll),这里主要是讲解Linux下的静态共享,以及它们的简单实现。        ...对于两种使用,需要结合实际情况来选择使用。下面用加减乘除的例子来简单的实现一下两个创建。我所用的系统是Ubuntu18.04 server版,首先我先把文件夹一些文件都提前创建好了。...静态        对于静态创建用ar命令:ar  rcs  静态名.a  *.o,然后我们就得到了一个.a的静态,然后我将其放到了lib文件夹下。 ?        ...共享 对于一个共享来说,它可以有三个名字,虽然这不是必须的,但是对于有后续的版本的维护或者更新来说,最好是规范的使用这三个名字,可以极大的方便我们去维护更新共享。...下面就还是以上面的例子来创建一个共享

    3.4K20

    【仓颉】创建静态使用

    ——摘自仓颉首页[1] 本文将逐步实现仓颉静态创建使用使用的当前版本为0.51.4。...前置条件 关于Win11 + VSCode的开发环境,请参考这篇文章[2] 创建静态项目 在VSCode中使用快捷键ctrl + shift + p 在上方的输入框中搜索Create Cangjie...的名称statictest是创建工程的时候设定的。另外可以看到项目根目录中的cjpm.toml中name字段。这个字段的值设置了三方的名称。...这里为了区分名称,我在之前写的时候,包名名特地写成了不一样的。还记得吗?statictest是工程中cjpm.toml的name字段。...statictestpack是项目中,demo.cj开头声明的package。 这样引入刚才的静态之后,就可以在下方的代码中调用cjadd()方法了。

    17610

    cmake:使用find_package查找libjpeg的静态

    https://blog.csdn.net/10km/article/details/82931978 我们知道简单的使用命令find_package可以查找指定的package....默认查找到的是动态,所以如果想查找libjpeg的静态,这样是不行的。...其实FindJPEG.cmake脚本在设计时已经考虑到了这个问题,如下是FindJPEG.cmake脚本的代码片段,可以看到调用者可以通过JPEG_NAMES这个变量指定优先查找到的名字。...所以如果想要指定优先使用静态,前面的cmake脚本可以稍改一下,如下,就是在调用find_package之前设置JPEG_NAMES为想要的静态名: # 查找libjpeg,优先使用静态 if(.../cmake/help/v3.11/module/FindJPEG.html https://cmake.org/cmake/help/v3.11/command/find_library.html

    1.8K20

    创建使用静态(ar 命令)

    创建使用静态(ar 命令) archive命令的功能是:创建或改动归档文件或者从归档文件里析取信息。...能够简单的理解为一个打包工具,将成员文件依照一定的规则构建到.a文件里,通常这样的类型的归档文件用来将经常使用的例程组织为一个静态,方便应用程序的链接。...重要參数: d – 从archive中删除模块,若指定v选项的话还会在删除的过程中信息打印; r – 以替换的方式添加模块; c – 强制创建一个。无论已存在与否。...s – 为中的可重定位目标文件创建符号索引或者更新, 对一个运行ar -s等价于对其运行ranlib命令。...t – 列表显示出archive中的内容; 用例:把经经常使用到的例程编译后的可重定位目标文件。用ar构建一个静态。demo例如以下: 注:gcc -L 表示指定搜索的路径。

    98810

    静态动态使用

    是一种可执行的二进制文件,是编译好的代码。使用可以提高开发效率。在 Linux 下有静态动态静态在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态了。...动态(动态也叫共享)在程序编译的时候不会被链接到目标代码里面,而是在程序运行的时候被载入的。所以程序在运行的时候需要动态了。因此编译出来的体积就比较小。以 lib 开头,以.so 结尾。...静态的制作步骤: 编写或准备的源代码 将源码.c 文件编译生成.o 文件 使用 ar 命令创建静态 测试文件 动态制作步骤: 编写或准备的源代码 将源码.c 文件编译生成.o 文件 使用 gcc...命令创建动态 测试文件 静态 新建 mylib.c 文件: #include void mylib(void); void mylib(void) { printf("...表示在当前目录下去查找 运行测试 a.out 在动态使用是,系统会默认去/lib,/usr/lib 目录下去查找动态函数,如果我们使用不在里面,就会提示错误。解决这个问题有三种方法。

    99220

    Linux gcc编译生成静态共享动态的过程

    这篇文章主要通过实例演示在Linux下如何使用gcc分别编译生成静态动态文件以及其它程序如何使用这个生成的静态动态。...hello.o [root@typecodes howto_gen_static_lib]# ls hello.c hello.h hello.o libmyhello.a main.c 那么如何使用生成的静态文件呢...解决方法一:使用root用户把自己生成的动态共享路径添加系统动态中即可。 ​...如下图所示,使用ln -sf libmyhello.so.1 libmyhello.so命令创建链接到soname的共享文件名(Link Name):libmyhello.so。 ​...这里如果前面一样,直接链接创建的动态文件libmyhello.so生成可执行文件hello,然后直至执行hello,那么也会提示找不到链接的动态libmyhello.so: [root@typecodes

    57221

    linux中的两种共享代码方式静态动态

    共享代码 随着软件开发的发展,人们发现很多应用的代码是相同的,也就是说这些代码可以被共享,因此,人们提出了静态动态两种方案来解决代码共享的问题。...静态 静态,顾名思义,它是静态的,也就说它不会被动态编译,它只会静态编译,节省了编译时间,提高了编译速度。同一份静态,可以被多个程序进行编译,也就实现了代码的复用共享。...动态 动态,就是程序应用启动的时候,动态加载的,因为它一般是在系统运行的时候就已经运行的动态,因此其它应用可以直接使用它,并且同一个动态可以被多个应用共享使用,在系统中对于一个动态只会存在一份...总结 人们为了减少冗余代码,提出了共享的概念,在链接的时候程序一同打包成一个可执行文件的这个就是静态,反之,在链接的时候不将动态打包进可执行文件,只是标记运行需要此共享,这就是动态。...静态增大了程序的体积,同时多个程序对相同静态的链接也占用了大量的内存,因此,才有了动态的出现,可以说两者都是为了解决代码共享复用的问题,而且两者是相辅相成的关系。

    1.2K40

    go语言静态的编译使用

    27 Apr 2018 go语言静态的编译使用 本文主要介绍go语言静态的编译使用方法,以windows平台为例,linux平台步骤一样,具体环境如下...卷序列号为 0009-D8C8 E:\SHARE\GIT\GO_PRACTICE\SRC │ main.go │ └─demo demo.go 在%GOPATH%\src目录,有demo包使用...现在,需要将demo.go编译成静态demo.a,不提供demo.go的源代码,让main.go也能正常编译运行,详细步骤如下: 1 编译静态demo.a >go install demo 在命令行运行...go install demo命令,会在%GOPATH%目录下生相应的静态文件demo.a(windows平台一般在%GOPATH%\src\pkg\windows_amd64目录)。...main.go:3: can't find import: "demo" 以上就是go语言静态的编译使用方法,下次介绍动态的编译使用方法。

    3.6K130
    领券