使用MakeFile和子目录
Working with makefile and subdirectories
我正在尝试弄清楚如何使用makefile和子目录。但是到现在为止。我想将所有.o文件放在"构建"子段中,所有.cpp都应在" src"中,而可执行文件则在" bin"文件中。
这是我的尝试:
PROG = prog1
BINPATH = bin/
CC = g++
CPPFLAGS = -Wall -pedantic -ansi -Iinclude
OBJS = main.o calc.o show.o
BUILDPATH = build/
SRCPATH = src/$(PROG):$(BUILDPATH)$(OBJS)
$(CC) -o $(BINPATH)$(PROG) $(BUILDPATH)$(OBJS)
$(BUILDPATH)main.o:
$(CC) $(CPPFLAGS) -c $(SRCPATH)main.cpp
$(BUILDPATH)cacula.o:calc.h
$(CC) $(CPPFLAGS) -c $(SRCPATH)calc.cpp
$(BUILDPATH)show.o:show.h
$(CC) $(CPPFLAGS) -c $(SRCPATH)show.cpp
clean:
rm -f core $(BINPATH)$(PROG) $(BUILDPATH)$(OBJS)
最直接的问题是您正在操纵变量。
OBJS = main.o calc.o show.o
BUILDPATH = build/
到目前为止,一切都很好,但是$(BUILDPATH)$(OBJS)
将扩展到build/main.o calc.o show.o
,这不是您想要的。尝试以下操作:
OBJS := main.o calc.o show.o
BUILDPATH := build/
OBJS := $(addprefix $(BUILDPATH), $(OBJS))
然后您可以这样使用OBJS
:
$(PROG): $(OBJS)
$(CC) -o $(BINPATH)$(PROG) $(OBJS)
还有其他几种改进此makefile的方法,但这应该足以使其正常工作。
相关文章:
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- 针对遗留库的链接:来自预制makefile的-lgfortranbegin
- 我怎样才能将所有子目录与 cmake 自动匹配
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何在使用Makefile构建后在cmd中运行该程序?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 使文件夹中的所有文件可供所有项目(子目录)访问
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 从所有列出的文件和子目录中更改目录
- 如何在macOS上使用Makefile?
- Makefile 创建两个库 - 一个依赖于另一个
- 子目录之间的 CMAKE 共享变量
- CMake:为什么added_subdirectory对其他子目录不可见
- 获取每个目录或子目录中第一个文件的路径
- 处理多个子目录中的 Makefile 依赖项并输出到单独的子目录
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- 使用MakeFile和子目录
- Cmake-让一个子目录使用自己的makefile
- 在Makefile.am中为生成的文件创建和删除子目录