从 makefile 创建两个单独的可执行文件 (g++)
目前,我已经设置了 makefile 来编译并制作一个相当大的项目。我编写了第二个 cpp 文件,其主要功能用于运行测试。我希望它们单独运行,但一起构建并且它们使用相同的文件。这是如何实现的?
编辑:作为参考,这是我当前的 makefile。我不知道如何调整它。
CC=g++
CFLAGS=-c -Wall -DDEBUG -g
LDFLAGS=
SOURCES=main.cpp Foo.cpp Bar.cpp Test.cpp A.cpp B.cpp C.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=myprogram
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) $< -o $@
Currently, I have my makefile set up to compile and make a fairly large project. I have written a second cpp file with main function for running tests. I want these to run separately, but build together and they use the same files. How is this accomplished?
edit: As reference, here is my current makefile. I'm not sure how to adjust it.
CC=g++
CFLAGS=-c -Wall -DDEBUG -g
LDFLAGS=
SOURCES=main.cpp Foo.cpp Bar.cpp Test.cpp A.cpp B.cpp C.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=myprogram
all: $(SOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@
.cpp.o:
$(CC) $(CFLAGS) lt; -o $@
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通常你只会有多个目标并执行如下操作:
然后你可以只
make
(默认为make all
),或者只是make target
或根据需要进行测试
。因此,对于上面的 makefile 示例,您可能需要这样的内容:
Normally you would just have multiple targets and do something like this:
Then you can just
make
(defaults tomake all
), or justmake target
ormake tests
as needed.So for your makefile example above you might want to have something like this:
这是一种方法:
这是有效的,因为 内置规则< /a> 用于从 C++ 源代码 (
%.o: %.cpp
) 编译对象并链接主程序 (%: %.o
)。另请注意变量 目标特定 值的使用 <代码>CPPFLAGS 和
CXXFLAGS
。Here's one way to do it:
This works because built-in rules exist for compiling objects from c++ source (
%.o: %.cpp
) and linking main programs (%: %.o
).Also note the use of target-specific values for the variables
CPPFLAGS
andCXXFLAGS
.