首页 > 解决方案 > 为什么使用 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;
}

标签: cmakefile

解决方案


你可以编写一个 C 程序来有效地构建一个给定的项目。这就是您显示的代码似乎暗示的内容。
对于更复杂的项目,当然会更复杂。
很快,您将开发您的程序来自动进行一些分析(例如依赖关系),而不是每次都对其进行硬编码。
然后你会发现,从一个项目到另一个项目,这些分析需要考虑不同的、特定于项目的概念和结构。
这会将项目特定配置的概念引入您的程序中。

那时,您将重新发明 make 工具,其项目特定配置在 makefile 等文件中完成。


推荐阅读