所以我的任务很简单,我已经创建了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。但是,现在我无法导出到其他目录。
有解决方案吗?或者这个概念有错吗?
答案 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 -g
和gdb
。
您可以在valgrind
Makefile
答案 1 :(得分:1)
试
$(OBJECT_PATH)/file1.o: $(SOURCE_PATH)/file2.cpp $(SOURCE_PATH)/file1.cpp
$(CC) $(CFLAGS) $^ -c $@
并检查CFLAGS是否包含-o -c或-s标志
还阅读有关隐式规则的内容。它可能会帮助你创建你的makefile