微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Makefile将.o文件导出到不同于.cpp的path

所以我的任务很简单,我已经创build了makefile(使用makefiles新build),并且希望将我的.o文件保存在不同的文件夹中,使其具有更清晰的目录,并允许其他人使用.o文件

我search并find了许多指向使用-o $ <$ @

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

这是我想要做的:

lib {库名} .a / .so是Linux中静态库的命名约定吗?

.NET / Windows Server中的最大传出套接字连接

为什么告诉我“命令未find”?

如何检查生成的DLL是静态还是dynamic链接

Windows和* nix编译检测

$(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的依赖。 但是,现在我不能导出到不同的目录。

解决scheme吗? 或者我有错的概念?

使用c / c ++编写的共享库的Linux C程序

Makefile和QTCreator

使用cmake构build可执行文件和共享库,runtimelinker找不到dll

在Windows中运行Eclipse C ++中的Hello World应用程序

使安装错误“无事可做”

使用make -d或者更好的重制 -x来理解哪些命令被调用

运行也可以make -p了解使用了哪些内置规则。

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

和C ++编译应该更好地使用CXX g++和CXXFLAGS g++ ,例如(我从我的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有以下内容

CXXFLAGS= -g -Wall SOURCES=f1.cc f2.cc SOURCE_PATH=yoursourcedir/ OBJECT_PATH=yourobjectdir/ SRCFILES=$(patsubst %.cc,$(SOURCE_PATH)/%.cc,$(SOURCES)) OBJFILES=$(patsubst %.cc,$(OBJECT_PATH)/%.o,$(SOURCES)) PROGFILE=$(OBJECT_PATH) .PHONY: all clean all: $(PROGFILE) $(PROGFILE): $(OBJFILES) $(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@ $(OBJECT_PATH)/%.o: $(SOURCE_PATH)/%.cc $(COMPILE.cc) $(OUTPUT_OPTION) $< clean: $(RM) $(OBJECT_PATH)/*.o $(PROGFILE)

尝试

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

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

也读了关于隐式规则。 它可能会帮助你改变你的makefile文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐