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

新手问题.我最近遇到了一个包含大量文件和外部库的项目.其中一些库包含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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...