当前位置: 首页 > news >正文

cmakelist使用总结

支持能编译成在不同系统上运行程序的方法
我们代码就一份,但有时需要编译成arm32,有时需要编译成x86_64,或更多

1、首先先将代码定义一个名称:
#将所有的源文件列为一个集合,集合名字叫做SRC_LISTS
set(SRC_LISTS
main.cpp
A.cpp
)
这里可以不用包含头文件。
2、指定不同的编译目标
#两个编译目标,分别是BIT64,ARM32
add_executable(BIT64
${SRC_LISTS})
add_executable(ARM32
${SRC_LISTS})
如果不同编译目标的源代码还有不通,可以定义两个源代码集合,如上面的SRC_LISTS,比图还可以定义一个SRC_LISTS_ARM32,然后在编译目标中使用不同的集合。

3、指定编译目标的生成文件名称和路径
SET_TARGET_PROPERTIES(BIT64 PROPERTIES
RUNTIME_OUTPUT_DIRECTORY …/BIT64/BIN
OUTPUT_NAME ${ExeFileName}
)
SET_TARGET_PROPERTIES(ARM32 PROPERTIES
RUNTIME_OUTPUT_DIRECTORY …/ARM32/BIN
OUTPUT_NAME ${ExeFileName}
)
这里指定编译64bit的输出路径是当前路径的上级路径下的BIT64/BIN
指定ARM32的最终生成文件的路径是当前路径的上级路径下的ARM32/BIN
输出文件名均为为ExeFileName,之前可以指定,比如SET(ExeFileName abc.exe)
就是64bit和ARM32的输出的可执行文件名均为abc.exe

4、指定链接需要的库
target_link_libraries(BIT64
pthread
sqlite3
)
target_link_libraries(ARM32
Pthread_arm32
sqlite3_arm32
)
这里的库的实际名称是需要加前缀和后缀的,比如pthread,实际的库名要么是libpthread.lib,要么是libpthread.so。
这里用到的BIT64和ARM32的库用不同的名字来区分,本来准备使用相同的名称放在不同的目录,但cmakelist只支持指定一个库路径:
link_directories(…/…/lib)
暂时未找到不同的目标用不同的库路径的方法,若有网友有此办法,望评论或私信告知。

http://www.lryc.cn/news/499566.html

相关文章:

  • 准备阶段 Unity优化总纲
  • ubuntu防火墙(三)——firewalld使用与讲解
  • zookeeper 搭建集群
  • Java——异常机制(下)
  • centos 手动安装libcurl4-openssl-dev库
  • JS学习(1)(基本概念与作用、与HTML、CSS区别)
  • 代码随想录算法训练营day50|动态规划12
  • JavaWeb学习(2)(Cookie原理(超详细)、HTTP无状态)
  • java抽象类
  • minio集群部署–linux环境
  • 在vue3里使用scss实现简单的换肤功能
  • JavaScript编写css自定义属性
  • 我们来学webservie - WSDL
  • 【Agent】构建智能诗歌创作系统:基于多 Agent 的协同创作实现
  • 001 LVGL PC端模拟搭建
  • AJAX三、XHR,基本使用,查询参数,数据提交,promise的三种状态,封装-简易axios-获取省份列表 / 获取地区列表 / 注册用户,天气预报
  • mybatis之数据统计与自定义异常处理
  • qt creator使用taglib读取音频元信息,windows平台vcpkg安装
  • 设计模式之生成器模式
  • python学opencv|读取图像(三)放大和缩小图像
  • 1 数据库(上):MySQL的概述和安装、SQL简介、IDEA连接数据库使用图形化界面
  • C++初阶—类与对象(中篇)
  • Leetcode15. 三数之和(HOT100)
  • Oracle数据库小白备忘
  • DDR4与DDR3服务器内存的关键区别有哪些?
  • Linux: shell: bash: set -x;调试使用
  • Hadoop生态圈框架部署 伪集群版(五)- HBase伪分布式部署
  • 自定义指令,全局,局部,注册
  • 静坐修心.
  • 设计模式c++(一)