CMake入门学习+实战<二> helloworld完善

文章整合自:

CMake Practice

http://sewm.pku.edu.cn/src/paradise/reference/CMake%20Practice.pdf

CMake 官方文档

https://cmake.org/cmake/help/latest/

以及其他网络资料

目标:

代码移植

静动态库编译调用

文章为CMake Practice的笔记以及一些错误整改或者补充。请参照源文章学习,官方文章以供深入学习。


思维导图为cmake practice目录,阅读时间建议为半天


<二>cmake helloWorld 改进


  • ADD_SUBDIRECTORY(source_dir [binary_dir] [EXCLUDE_FROM_ALL])

src——>源代码目录 bin——>目标输出目录#just like what it names


  • SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)#设置二进制输出路径build/bin
  • SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)#设置库文件输出路径build/lib
上述命令加入到含有ADD_EXECUTABLE/ADD_LIBRARY命令的CMakeLists.txt 文件下 
  • 安装工作
make install #安装至/usr/bin/目录下

make install
DESTDIR=/tmp/test #安装至/tmp/test/usr/bin目录下

make install
DESTDIR=
PREFIX=/usr #PREFIX设定

注意PREFIX和DESTDIR的区别:

编号1决定了软件包安装后的位置,以及软件包在运行时在哪里查找相关文件.这是你应该使用,如果你只是编译的东西在单个主机上使用.
determines where the package will go when it is installed, and where it will look for its associated files when it is run. It's what you should use if you're just compiling something for use on a single host.

编号3用于安装到临时目录,这不是从哪个程序包运行.例如,这在构建 deb 包时使用.构建包的人实际上并不将所有东西安装在其自己的系统上的最终位置.他可能已经安装了不同的版本,不想打扰它,或者他甚至可能不是根.所以他使用configure --prefix = / usr,所以程序将运行时预期安装在/ usr中,然后make install DESTDIR = debian / tmp来实际创建目录结构.
installing to a temporary directory which is not where the package will be run from. For example this is used when building deb packages. The person building the package doesn't actually install everything into its final place on his own system. He may have a different version installed already and not want to disturb it, or he may not even be root. So he uses configure --prefix=/usr so the program will expect to be installed in /usr when it runs, then make install DESTDIR=debian/tmp to actually create the directory structure.

INSTALL(TARGETS myrun mylib mystaticlib
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION libstatic
)
上面的例子会将:
可执行二进制myrun 安装到${CMAKE_INSTALL_PREFIX}/bin 目录
动态库libmylib安装到${CMAKE_INSTALL_PREFIX}/lib目录
静态库libmystaticlib 安装到${CMAKE_INSTALL_PREFIX}/libstatic目录

章节总结:

取于网络,回归于网络。 (人力) 项目组成员访谈表.mmat (全局) 项目主视图.mmat (全局) 项目会议.mmat (基础) 项目定义.mmat (控制) 项目报告.mmat (控制) 项目状态报告.mmat (控制) 项目状态报告列表.mmat (结项) 培训.mmat (结项) 项目评审.mmat (计划) 工作分类结构(WBS).mmat (计划) 项目干系人满意定义.mmat (计划) 项目沟通路径.mmat (计划) 项目组成员.mmat (计划) 项目组成员列表.mmat (计划) 项目计划包含阶段.mmat (计划) 项目资源.mmat (计划) 项目风险评估.mmat 90天角色转换-new.mmap New Blank Map.mmat Outlook控制盘.mmat SWOT 分析.mmat SWOT分析法.mmap 一周计划.mmat 三年前的选择.mmap 个人简历.mmat 举办活动.mmap 书籍出版.mmat 企业组织图 .mmap 会议组织.mmat 会议记录.mmap 会议记录1.mmap 公司架构图.mmat 写作计划.mmap 决策.mmap 创建流程.mmat 加强抵御灾害风险的能力.mmap 口才(利兹).mmap 国家信息化发展战略.mmap 培训计划.mmat 头脑风暴 brainstorming.mmap 工作找寻.mmat 工艺流程.mmat 市场战略.mmat 市场策划.mmat 市场策略.mmat 平衡积分卡.mmat 平衡计分卡.mmap 待办事宜1.mmat 待办事宜2.mmat 待办事项备忘录.mmap 战略决策-SWOT分析.mmat 战略决策-SWOT分析实例.mmat 战略规划.mmat 整理旅行箱.mmat 文件处理 Process Documentation.mmap 旅游计划1.mmat 旅游计划2.mmat 旅行计划.mmap 格雷大学课程计划.mmap 模板汉化说明.txt 汽车销售流程图.mmap 状态报告.mmat 盈亏分析 Win_Loss_Analysis.mmap 空白图表(Tablet).mmat 空白图表.mmat 简历.mmap 组织会议.mmat 组织架构图(一).mmat 组织架构图(三).mmat 组织架构图().mmat 组织架构图(四).mmat 营销策略 Marketing Strategy.mmap 著作出版.mmat 行李清单.mmap 论文计划 Paper Planning.mmap 资产负债表.mmat 软件公司技术管理.mmap 软件需求分析工作.mmap 进行决策.mmat 部门架构图.mmat 项目仪表板.mmat 项目审核检查单.mmap 项目工作交流.mmap 项目控制.mmat 项目时间线.mmat 项目时间表.mmat 项目状态.mmat 项目管理.mmat 项目规划.mmat 项目规范.mmat 项目计划 projectPlanning.mmap 项目进展报告 Status Report.mmap 风险管理.mmat 等等...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值