c++ - 在 makefile 的子目录中链接对象构建

标签 c++ makefile

我试图在可执行文件编译期间链接我在 makefile 中构建的所有对象,但我似乎无法自动选择构建目录。

我试过:

test: $(OBJECTS)
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(BUILDDIR)/$^ test.cpp -o test.exe

问题是 $(BUILDDIR)/$^ 只在第一个目标文件前面插入 $(BUILDDIR)

我应该怎么做?

最佳答案

如果你想直接在命令中添加$(BUILDDIR)到所有先决条件,那么你可以这样做:

test: $(OBJECTS)
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $(addprefix $(BUILDDIR)/,$^) test.cpp -o test.exe

但是,以这种方式设置 make 规则意味着您没有正确跟踪依赖关系。我认为您真正想要的是:

test: $(addprefix $(BUILDDIR)/,$(OBJECTS))
    $(CC) $(CFLAGS) $(INCDIR) $(LIBDIR) $^ test.cpp -o test.exe

关于c++ - 在 makefile 的子目录中链接对象构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495600/

相关文章:

c++ - 如何将cstring更改为unicode

makefile - 如果没有指定目标, "make"应用程序如何知道要构建的默认目标?

c - 错误 : ‘CODEC_TYPE_AUDIO’ undeclared when make m3u8-segmenter

C++ 文件需要库支持

c++ - 使用小数字的数字的不同组成

c++ - Linux 中的 Cout 和 Cin - 看不到控制台

c++ - 为什么用于打印输入数字分隔符的简单程序停止工作?

variables - 是否可以在 Makefile 中创建多行字符串变量

android - ROLI JUCE Android CMake 错误,生成的空白演示应用程序无法在 Android Studio 中编译

c++ - 未输入 If-block,不知道为什么