【发布时间】:2011-04-25 14:32:28
【问题描述】:
我对 makefile 非常陌生。我之前做过的最复杂的任务是在已经设计好的 makefile 中包含新的 .h 和 .cpp 或 .c。
我必须将项目的编译过程从 Visual Studio 移植到 gcc,一位同事已经为此编写了一个解决方案,但他使用 4 个 bash 脚本和一个 makefile 来编译解决方案。
我没有这样做,而是在寻找更易于维护的解决方案。我承认我的问题可能很愚蠢,但我在任何地方都找不到,也无法完全理解。
在下面的目标中:
$(OBJECTS): %.o: %.cpp
$(CC) $(CPPFLAGS) -c $< -o $@
我想测试正在创建的 .o 是否已经存在并将其重命名为其他名称。这是必要的,因为在项目中存在多个同名但内容不同的源文件。
例如,如果当前正在编译的 .cpp 被称为 file.cpp 并且将生成的对象是 file.o,则规则应该测试 file.o 是否已经存在并将当前 file.o 重命名为其他名称.
如果您知道任何解释这一点的好教程,请告诉我。我发现了很多示例,这些示例展示了如何为当前正在按该规则编译的文件进行测试,但没有一个示例会重命名对象 .o。
在此先感谢您对此处所写的任何“愚蠢”表示歉意。 :-)
【问题讨论】:
-
我过去所做的是将目标文件放在与源文件相同的目录层次结构中。我猜你有不同级别的同名文件?
-
@Max ,是的。有两个不同的目录,源文件名为 file1.cpp file2.cpp 等。
标签: makefile gnu-make multiple-makefiles