gpt4 book ai didi

c++ - 用于将多个.cpp 和.h 编译成一个lib 的Makefile

转载 作者:太空狗 更新时间:2023-10-29 21:08:24 26 4
gpt4 key购买 nike

我在 Cygwin 下运行带有 gcc/g++ 的 Windows 7。将一组 .cpp(C++ 源代码)和 .h(头文件)文件编译成静态库 (.dll) 的 Makefile 格式(和扩展名,我认为是 .mk?)是什么?假设我有一组可变文件:

  • 文件1.cpp
  • 文件1.h

  • 文件2.cpp

  • 文件2.h

  • file3.cpp

  • file3.h

  • ....

将这些编译成静态库的 makefile 格式(和扩展名)是什么? (我对 makefile 很陌生)最快的方法是什么?

最佳答案

扩展名根本没有,如果您希望 GNU Make 自动找到该文件,则该文件称为 Makefile(或 makefile)。

至少,GNU Make 允许您依赖某些自动变量,这些变量本身就可以让您以 C/C++ 文件作为输入来控制大部分构建过程。这些变量包括CCCPPCFLAGSCPPFLAGSCXXCXXFLAGSLDFLAGS。它们控制 make 将使用的 C/C++ 预处理器、编译器和链接器(最终组装程序的程序)的开关。

GNU Make 还包含许多隐式规则,旨在使其能够从 C/C++ 源代码自动构建程序,因此您不必 [总是] 编写自己的规则。

例如,即使没有 makefile,如果您尝试运行make foobar,GNU Make 也会尝试首先构建foobar.ofoobar.cfoobar.cpp 如果找到,通过调用适当的编译器,然后将尝试通过汇编构建 foobar (包括. 链接) 它来自系统库和 foobar.o 的部分。简而言之,即使没有生成文件,GNU Make 也知道如何构建 foobar 程序——这要归功于隐式规则。您可以通过使用 -p 开关调用 make 来查看这些规则。

有些人喜欢依靠 GNU Make 的隐式规则数据库来获得精简和简短的 makefile,其中只指定了他们项目的特定内容,而有些人可能会禁用整个隐式规则数据库(使用 -r 开关)并通过在其 makefile 中指定所有内容来完全控制构建过程。我不会评论这两种策略的优越性,请放心,这两种策略都在一定程度上起作用。

关于c++ - 用于将多个.cpp 和.h 编译成一个lib 的Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3092740/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com