FreeBSD Gnu Makefile
FreeBSD Gnu Makefile
我想编译大约 100 和 100 个 .h .cpp文件。
如何创建 GNU Makefile, 在 FreeBSD 下编译。
我的意思是我不知道如何制作依赖项、lib、链接器。
您必须编译并.cpp .c .o .h
而且我从来没有使用过GNU Makefile。
这是一个 makefile,它将当前目录中的每个 cpp 文件编译成 program
。它是GNU使具体。请注意,在 FreeBSD 上,make
不是 GNU make!您需要安装并运行 gmake。
CPPFLAGS := # flags for preprocessing: -D -I etc.
CXXFLAGS := -Wall -pedantic -Wextra -Wformat=2
LDFLAGS := # linker options, like -L/usr/local/boost/lib
LDLIBS := # libraries to link to, e.g. -lboost_system
SOURCES := $(wildcard *.cpp)
OBJECTS := $(SOURCES:.cpp=.o)
all: program # by convention, the first (default) target is called "all"
program: $(OBJECTS)
$(LINK.o) $^ $(LDLIBS) -o $@
clean:
rm -f $(OBJECTS) program
GNU make 有内置的规则来从.cpp构建 .o;我们只需要为该规则提供一些参数(CPPFLAGS、CXXFLAGS)。
它还知道如何从单个program.o
制作program
。这在我们的例子中没有用,因为有多个 .o 文件。因此,我们必须明确地告诉 make,program
取决于目标文件以及生成它的配方。
如果当前目录中有 foo.cpp 和 bar.cpp,则SOURCES
的值为 foo.cpp bar.cpp
,OBJECTS
将为 foo.o bar.o
。当您在没有显式目标的情况下调用make
时,它会尝试构建它看到的第一个目标(all)。 all
取决于program
,所以尝试构建program
。Make看到program
需要foo.o
和bar.o
但它们不存在。幸运的是,make 看到有一个foo.cpp
,它知道如何从中创建foo.o
;与bar.o
相同.编译C++文件以生成目标文件后,可以继续链接它们以生成program
相关文章:
- 针对遗留库的链接:来自预制makefile的-lgfortranbegin
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何在使用Makefile构建后在cmd中运行该程序?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 使用 Powershell 命令将 cpp 文件的文件夹编译为 GNU 的 g++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 如何在macOS上使用Makefile?
- 如何使用 gnu gcc 标志 -mpc32、-mpc64 和 -mpc80?
- Makefile 创建两个库 - 一个依赖于另一个
- 我将 Makefile 更改为 C++11 版本,但仍然收到列表初始值设定项错误
- Arduino-Makefile:编译器无法编译用户库 cpp 文件
- 将一个用户的gnu makefile转换为另一个用户
- 将静态库与gnu g 链接:没有这样的文件或目录,makefile
- GNU Makefile自动依赖解析
- C Gnu makefile我无法用ar创建静态库
- GNU MAKE - 从我自己的 Makefile 创建 getoptpp 库或建议 c++ 的命令行选项库
- FreeBSD Gnu Makefile
- GNU make: Makefile一次构建多个.cpp文件
- GNU Make -在规则/目标中设置shell命令输出中的MAKEFILE变量
- 如何在GNU Makefile中只获取文件名而不扩展名