gpt4 book ai didi

c++ - 将目录中的所有 cpp 文件编译成单独的可执行文件的 Makefile

转载 作者:可可西里 更新时间:2023-11-01 17:08:15 27 4
gpt4 key购买 nike

我现在正在学习C++。我想要一个将当前目录中的所有 cpp 文件编译为单独的可执行文件的 makefile。 例如:

在一个目录下有3个c++文件,分别是examp1.cpp、examp2.cppexamp3.cpp。我想要一个将编译和链接它们并提供 examp1.exe、examp2.exeexamp3.exe

的 makefile

我已经创建了一个 bash 脚本来编译所有这些脚本并创建 exe,但我认为;那不是执行此操作的确切方法。

我有一个“.c”的 Makefile,但它在这里似乎不起作用。它只是创建目标文件,而不是实际链接它。具体如下:

SRCS=$(wildcard *.c)
OBJS=(SRCS:.c=.o)
all: $(OBJS)

以上代码将所有新的和修改过的“.c”文件编译为当前目录中同名的“.o”文件。

我用来创建可执行文件的 bash 脚本如下:

for i in ./*.cpp
do
g++ -Wno-deprecated $i -o `basename $i .cpp`".exe"
done

这意味着我想要放入该目录中的任何“.cpp”文件,方法是使用简单的“make all”或任何类似它应该编译的东西。

最佳答案

做你想做的最小 Makefile 是:

#Tell make to make one .out file for each .cpp file found in the current directory
all: $(patsubst %.cpp, %.out, $(wildcard *.cpp))

#Rule how to create arbitary .out files.
#First state what is needed for them e.g. additional headers, .cpp files in an include folder...
#Then the command to create the .out file, probably you want to add further options to the g++ call.
%.out: %.cpp Makefile
g++ $< -o $@ -std=c++0x

您必须用您正在使用的编译器替换 g++ 并可能调整一些特定于平台的设置,但 Makefile 本身应该可以工作。

关于c++ - 将目录中的所有 cpp 文件编译成单独的可执行文件的 Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9787160/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com