未完全运行生成文件
Running Makefile not completely
我是MaKefile的菜鸟,最近一直在学习它。 但是,当我尝试在终端上运行make
命令时遇到了麻烦。 这是我的制作文件:
CC = g++
CFLAGS = -g -Wall
bin = ./bin/
makedir:
@echo "build ./bin"
mkdir $(bin)
all: algo
OBJS = $(patsubst %.o, $(bin)%.o, BB.o BF.o method.o algo.o)
algo: BB.o BF.o method.o algo.o
$(CC) -o algo $(OBJS)
BB.o: BB.cpp
$(CC) $(CFLAGS) -c $^ -o $(bin)$@
BF.o: BF.cpp
$(CC) $(CFLAGS) -c $^ -o $(bin)$@
method.o: method.cpp
$(CC) $(CFLAGS) -c method.cpp -o $(bin)$@
algo.o: algo.cpp method.hpp
$(CC) $(CFLAGS) -c algo.cpp -o $(bin)$@
clean:
-rm -f $(bin)*
-rmdir $(bin)
-rm -f algo
我试图将目标文件放在bin
目录中。 但是,终端仅显示:
build ./bin
mkdir bin
这就是问题所在。仅创建名为bin
的空目录。 似乎在mkdir
命令之后它什么也没做。
有关更多详细信息,它是我在运行命令之前的目录结构make
:
├── algo.cpp
├── BB.cpp
├── BF.cpp
├── Makefile
├── method.cpp
├── method.hpp
我对此一无所知,并试图找到任何解决方法,但毫无用处。 顺便说一句,我也是Stackoverflow的菜鸟。 如果我不以好的方式提问,请告诉我,我会变得更好。非常感谢!
当您在没有参数的情况下运行make
时,将遵循 Makefile 中第一个目标的配方。
您的第一个目标是makedir
,其配方执行这两个命令,而不是其他任何命令。所以,计算机正在做你要求它做的事情。
我建议你把all
目标放在第一位,makedir
作为实际依赖它的目标的先决条件:
CC = g++
CFLAGS = -g -Wall
bin = ./bin/
all: algo
OBJS = $(patsubst %.o, $(bin)%.o, BB.o BF.o method.o algo.o)
algo: BB.o BF.o method.o algo.o
$(CC) -o algo $(OBJS)
BB.o: makedir BB.cpp
$(CC) $(CFLAGS) -c $^ -o $(bin)$@
BF.o: makedir BF.cpp
$(CC) $(CFLAGS) -c $^ -o $(bin)$@
method.o: makedir method.cpp
$(CC) $(CFLAGS) -c method.cpp -o $(bin)$@
algo.o: makedir algo.cpp method.hpp
$(CC) $(CFLAGS) -c algo.cpp -o $(bin)$@
makedir:
@echo "build ./bin"
mkdir $(bin)
clean:
-rm -f $(bin)*
-rmdir $(bin)
-rm -f algo
不过,有更好的方法来处理构建输出目录的创建(示例(。
相关文章:
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 从 cmake 文件运行 npm 命令
- C++ 从文件运行实际代码而不编译它
- 如何直接在安卓设备上作为可执行文件运行简单的 c++ 程序?
- 用于使用可选输入文件运行 C++ 的 VIM 映射
- 我的应用程序是从Visual Studio内部运行还是通过执行EXE文件运行
- LD_BIND_NOW可以使可执行文件运行得更慢?
- 生成文件:从生成文件运行其他生成文件
- G++ 和 CL(VS2017) 都编译成功,但 cl 编译的可执行文件运行异常
- 阻止EXE文件运行C
- 如何从安卓原生二进制文件运行单独的进程
- 为在应用程序中作为函数参数传递的文件运行'iconv'命令C++
- 通过Linux命令行执行时,可执行文件运行正常 - 调用C System()命令时运行时错误
- 如何从另一个CPP文件运行整个CPP文件
- C++从文本文件运行代码
- 编译并使用生成文件运行
- 为我的生成文件运行时出错.cpp
- C++获取当前文件运行exe
- 如何在C++中从类文件运行函数
- 基于使用 make 命令或生成文件运行预处理器