c - 为什么使用 Makefile 而不是只写 C 来做同样的事情?
问题描述
这个问题不是基于意见的——我正在寻找简单方法的客观缺点,我知道这可能并不理想,但表面上看起来还不错。
编辑:我并不是要以某种方式暗示我正在用 C 编写自己的Make - 不,我只是想知道,在简单和小型的程序中,这种方法是否比 make 有任何缺点。
现在,问题。
C 是一种通用的、面向系统编程的语言,因此可以安全地假设一个人可以用它来破解任何东西。
当然,我们有不同的语言和工具允许我们使用最好的工具来完成这项工作,而 Makefiles专门用于高效且最省事的编译 - 我明白了。但是,一个人基本上可以用 C 做他们用 makefile 做的事情——而且显然没有更多的困难!?
这种做法除了“不使用行业标准”之外,还有哪些客观弊端?
一个糟糕的 2 分钟示例,绝不是完美或完成,也没有文件选择性编译,但只是为了说明我的观点 -
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("\n Mode : "); int mode; scanf("%d",&mode);
if(mode==1){
system("cc -Wall -o3 file1.c file2.c -o bin_file_name");
}
else if(mode==2){
system("cc -Wall -Wextra -pedantic -Wconversion -o0 file1.c file2.c -o bin_file_name");
}
return 0;
}
解决方案
你可以编写一个 C 程序来有效地构建一个给定的项目。这就是您显示的代码似乎暗示的内容。
对于更复杂的项目,当然会更复杂。
很快,您将开发您的程序来自动进行一些分析(例如依赖关系),而不是每次都对其进行硬编码。
然后你会发现,从一个项目到另一个项目,这些分析需要考虑不同的、特定于项目的概念和结构。
这会将项目特定配置的概念引入您的程序中。
那时,您将重新发明 make 工具,其项目特定配置在 makefile 等文件中完成。
推荐阅读
- c++ - 我在哪里可以找到 std::bitset 的数据成员?
- vue.js - vue 实例中的嵌套 vue 实例
- javascript - 尝试从 JSTL 循环中读取复选框值
- python - 面对ValueError:目标是多类但平均值='二进制'
- javascript - 为页面上的每个 iFrame 添加 `load` 事件
- php - 无法使用 curl post 更新表单
- puppeteer - 获取所有可见的纯文本并找出每段文本属于哪个 HTML 标记或 DOM 元素
- apache-nifi - ListFile 处理器,强制处理器每次都列出完整目录
- java - 如何在不使用注释的情况下在休眠中设置自动递增 id?
- python - 解析查询字符串