用make和自动依赖关系构建程序
building program with make and automatic dependencies
我写了一个简单的c++程序,这是我第一次想用makefile
编译并链接它。作为一个挑战,我想做一个makefile,它自己列出所有依赖项。我正在遵循本教程。我的程序由main.cpp
, ext1.cpp
和ext1.h
组成。在本教程之后,我有以下makefile
VPATH = src include
CPPFLAGS = -o include
CC = gcc
SOURCES = main.cpp
ext1.cpp
-include $(subst .c,.d,$(SOURCES))
%.d: %.c
$(CC) -M $(CPPFLAGS) $< > $@.$$$$;
sed 's,($*).o[ :]*,1.o $@ : ,g' < $@.$$$$ > $@;
rm -f $@.$$$$
当我运行这个时,我得到的消息是:make: *** No targets specified and no makefile found. Stop.
我不清楚我在我的情况下缺少什么?
你一次想做的事太多了。
步骤1。你的第一个makefile应该构建可执行的而不需要尝试自动依赖检测。
VPATH = include src
CPPFLAGS += -Iinclude
CC = gcc
exec: main.o ext1.o
$(CC) $^ -o $@
%.o: %.cc
$(CC) -c $(CPPFLAGS) $< -o $@
main.o ext1.o: ext1.h
步骤2。一旦工作完美,你可以把头依赖放在单独的文件:
makefile:
VPATH = include src
CPPFLAGS += -Iinclude
CC = gcc
exec: main.o ext1.o
$(CC) $^ -o $@
%.o: %.cc
$(CC) -c $(CPPFLAGS) $< -o $@
-include *.d
main.d:
main.o : ext1.h
ext1.d:
ext1.o: ext1.h
步骤3。一旦工作完美,你就可以自动生成依赖文件:
VPATH = include src
CPPFLAGS += -Iinclude
CC = gcc
exec: main.o ext1.o
$(CC) $^ -o $@
%.o: %.cc
$(CC) -c -MMD $(CPPFLAGS) $< -o $@
-include *.d
找不到make文件?你给makefile取了什么名字?如果你只是执行make
命令,请确保它是makefile
或Makefile
,否则你可以像这样将文件名传递给make
make -f yourmakefile
和peter Budnik建议的修改必须生效
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- 无法在 CLion 中构建 C++ 项目
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用ndk-build.cmd构建Android.so文件
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 无法使用Qt Creator在Windows中构建yaml-cpp
- C++GTKMM gui循环依赖关系
- 构建一个由C和C++文件组成的库
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- 酿造警告:依赖关系是使用不同的C 标准库构建的
- Cmake构建一个共享库,其中包含其所有依赖关系
- Windows 10 UWP桌面桥应用程序(C ):调试构建中的VCLIBS依赖关系
- 由于 opencv 依赖关系,使用 openCV 的项目无法构建
- 如何在Visual Studio中构建具有不同依赖关系版本的多个产品
- 用make和自动依赖关系构建程序
- 如何在Makefile中根据多个源文件各自的头依赖关系构建多个源代码文件
- 如何在Visual Studio 2015中构建具有循环依赖关系的C++项目