微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

制作或制作.我需要两个吗?

新手问题.我最近遇到了一个包含大量文件和外部库的项目.其中一些库包含Makefile和CMakeLists.txt.
我正在建立一个涉及外部图书馆的类似项目.是否有必要同时学习CMake和make.或者CMake是否足够?

解决方法

How to frame the concept behind CMake

无需学习编写makefile,因为CMake是abstraction layer或“Meta-make”为您生成makefile.作为任何抽象层,您只需要使用其功能进行学习.但是你还需要了解它的开发任务.在这种情况下,What is a build tool?What is a native build environment?

What does the “c” in cmake stand for?

但是cmake – 与ctest,cpackcdash结合 – 远不止于此,它(大部分)确实消除了学习编译器/链接器开关,平台/框架处理库/可执行文件及其安装等的需要.

>交叉编译

>它支持CMake Generators中汇总的许多不同的构建环境输出格式
>它确实例如在CMake Compile Features中抽象出特定的编译器开关

>跨平台

>它适用于所有类型的操作系统(概述于CMake’s Download Page),具有不同的设置
>它适用于或直接集成到许多IDE或editors中,例如,Visual StudioCLion
>它可以交叉编译到特定的目标平台,例如Android总结于CMake Toolchains

>跨语言

>它主要支持C/C++,但也支持例如Asm,RC,Fortran和CMake version 3.8 C#
>它确实消除了学习其他脚本语言(通常用于执行构建前或构建后步骤)的需要,因为它嵌入了中型脚本语言

Difference between using Makefile and cmake to compile the code

根据我在项目中使用CMake的经验:

>缺点:您需要对所有目标环境进行测试(诚然,这对CMake来说并不具体).在封闭的环境中(例如在公司内部),它相对容易维护,但在例如一个开源设置,总会有一个或其他先例,你需要稍微调整一下你的CMake脚本.
>好处:CMake在C/C++项目中得到广泛使用/支持,它使我作为项目的潜在用户可以选择采用我的构建环境并选择工具(例如我在项目中用ninja替换了make).

参考

> C++ Build Systems – What to use?
> C++ build systems

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐