Makefile将.o文件导出到与.cpp不同的路径

时间:2012-11-01 10:45:59

标签: linux ubuntu makefile

所以我的任务很简单,我已经创建了makefile(带有makefile的新文件),我想将我的.o文件保存在一个不同的文件夹中,以便有一个更干净的目录,并允许其他人使用.o文件。

我搜索并发现许多解决方案指向使用-o $< $ @

然而,它给了我g++: cannot specify -o with -c or -S with multiple files

这就是我想要做的事情:

$(OBJECT_PATH)/file1.o: $(SOURCE_PATH)/file2.cpp $(SOURCE_PATH)/file1.cpp
        $(CC) $(CFLAGS) $(SOURCE_PATH)/file2.cpp $(SOURCE_PATH)/file1.cpp -o $@

file1.cpp有#include“file1.h”,所以根据我的内容,我应该在依赖项中包含file1.cpp。但是,现在我无法导出到其他目录。

有解决方案吗?或者这个概念有错吗?

2 个答案:

答案 0 :(得分:1)

使用make -d甚至更好remake -x来了解调用的命令。

还运行make -p以了解使用的内置规则。

我们无法帮助您,因为我们不知道您是否重新定义了CFLAGS

最好使用g++CXX的{​​{1}}进行C ++编译,例如with(我从CXXFLAGS输出中提取此内容)

make -p

我强烈建议至少在开发阶段LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c CXX = g++ %.o: %.cc $(COMPILE.cc) $(OUTPUT_OPTION) $< 。另请学习使用CXXFLAGS= -Wall -ggdb

您可以在valgrind

中拥有以下内容
Makefile

答案 1 :(得分:1)

$(OBJECT_PATH)/file1.o: $(SOURCE_PATH)/file2.cpp $(SOURCE_PATH)/file1.cpp
    $(CC) $(CFLAGS) $^ -c $@

并检查CFLAGS是否包含-o -c或-s标志

还阅读有关隐式规则的内容。它可能会帮助你创建你的makefile