代码之家  ›  专栏  ›  技术社区  ›  Muhammad Umar

编译整个C项目,而不是几个文件

  •  3
  • Muhammad Umar  · 技术社区  · 6 年前

    我有一个完整的C语言库。它几乎有10个文件夹,其中包含大量文件。

    我已经创建了一个文件名。根文件夹中的c文件,并尝试在mac中使用 gcc test.c -o test 但是,它不包括头文件。通常我必须添加所有头文件 gcc test.c libaudio.c -o test

    如何编译整个项目而不是一个文件。

    4 回复  |  直到 6 年前
        1
  •  4
  •   Jose    6 年前

    Makefiles将解决您的问题。您可以创建自己的规则来清除项目(删除生成的文件),构建项目,指明编译器的位置(编译位于特定路径、扩展名等中的源文件),设置输出路径等,而无需键入大的编译顺序。

    https://www.gnu.org/software/make/manual/make.html

    编辑:在那里,您可以通过makefiles找到如何将共享库、静态库或原始库添加到项目中。

        2
  •  2
  •   Edwin Buck    6 年前

    使用 Makefile make 实用程序读取 生成文件 将自动运行各个命令,这样您只需命名要重建的项。

    make myprogram
    

    和make将使用存储在 生成文件 的规则来确定哪些其他元素“过时”,重新构建这些元素并将其组装成 myprogram

    This is a decent "first time" tutorial for "make".

    Here is the full blown documentation for "make"

    一旦掌握了make中的概念,就可以使用其他工具进行维护 Makefiles 要么更简单、更便携,要么两者兼而有之。

    一些改进“make”的工具包括“cmake”、“automake”、“autotools集合”、“scons”、“waf”、“rake”、“doit”、“ninja”、“tup”、“redo”和“sake”。还有更多,一些是特定于编程语言的,或者仅限于特定环境。

    我之所以推荐“make”而不是其他工具,是因为“make”是一个始终存在的基线,在您获得足够的“make”经验之前,通常无法理解或认识到其他工具中的功能是必需的。

        3
  •  0
  •   rotoglup    6 年前

    在C语言中,项目的概念不是语言的一部分,它通常取决于您必须构建的工具/平台/库。

    在基于Linux的平台上,您可能有 makefile 描述项目,或者库可能有 cmake 剧本

    您应该能够在库文档中找到构建说明。

        4
  •  0
  •   Gem Taylor    6 年前

    我绝对推荐make方法,因为它是可伸缩的。

    如果您确实只有几个文件,gcc将接受多个。命令行上的c文件,并将它们链接起来以生成一个可执行文件。