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

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.kler.cn/a/428113.html

相关文章:

  • [EAI-027] RDT-1B,目前最大的用于机器人双臂操作的机器人基础模型
  • 模型I/O功能之模型包装器
  • 【开源免费】基于SpringBoot+Vue.JS公交线路查询系统(JAVA毕业设计)
  • 探索性测试与自动化测试的结合
  • 实时数据处理与模型推理:利用 Spring AI 实现对数据的推理与分析
  • 简要介绍C语言和c++的共有变量,以及c++特有的变量
  • pycharm集成环境中关于安装sklearn库报错问题分析及解决
  • Django drf 基于serializers 快速使用
  • 专升本计算机——计算机基础知识测试(答案解析)
  • PHP和GD库如何给图片添加透明效果
  • CorsConfig前后端数据跨域连接,IDEA右侧Maven窗口消失
  • 每日一练 | Diff-Serv在QoS配置中的应用
  • 树莓派3B+驱动开发(4)- LED驱动(DTS和Driver模式)
  • 计算机毕业设计Python医疗问答系统 医疗可视化 BERT+LSTM+CRF深度学习识别模型 机器学习 深度学习 爬虫 知识图谱 人工智能 大数据毕业设计
  • [ABC267D] Index × A(Not Continuous ver.)
  • Linux系统 —— 进程系列 - 进程的概念,PCB与PID和fork
  • Redis与缓存
  • 如何解决 docker 容器中 “-bash: ping: command not found” 错误 ?
  • vue3父子组件通信
  • Asp.net Mvc在VSCore中如何将增删改查的增改添加数据传输到页面(需配合上一篇Mvc的增删改查一起)
  • IDEA社区版创建新模块时,无Spring Initializr选项
  • ES-DSL查询
  • 如何通过自学成长为一名后端开发工程师?
  • 【在Linux世界中追寻伟大的One Piece】HTTP Session
  • 运维工程师.云计算工程师指令集锦
  • Kubernetes架构原则和对象设计(二)