gpt4 book ai didi

linux - 编写一个 Makefile 以自动获取文件名并创建具有相同名称的相应可执行文件

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:51 27 4
gpt4 key购买 nike

我想编写一个 Makefile 来挑选每个 .cpp 文件并创建相应名称的可执行文件。

例如,如果我有 3 个文件:a.cppb.cppc.cpp。 我希望在 make 上执行以下行。

g++ a.cpp -o a -Wall
g++ b.cpp -o b -Wall
g++ c.cpp -o c -Wall

怎么能写出这样的Makefile呢?我试过这样的事情:

CC = g++
CFLAGS = -Wall

SRC=$(wildcard *.cpp)

test: $(SRC)
gcc -o $^ $^ $(CFLAGS)

但说真的,这是我在 Unix 系统上的第一个 Makefile。我写了很多严肃的 Android.mk 并想试一试。不起作用,但我想我已经很接近了。需要您的帮助。

最佳答案

我认为你正在覆盖 implicit rules of GNU make ,这可能不是一个好主意。我会离开 Makefile就像这样:

CXXFLAGS = -Wall

(没有任何规则,默认情况下 CXX 也设置为 g++)

然后,假设您有三个包含以下内容的文件:

#include <iostream>
int main() { std::cout << "Hello World!\n"; return 0; }

称为 a.cpp , b.cppc.cpp (根据你的问题),你可以简单地做:

make a
make b
make c

隐式规则会处理它。您可以添加 all包含二进制文件名称的规则和隐式规则仍然有效。


注意事项

这不适用于非 gnu make。但是在非 gnu 上 make 大多数 $@ , $< , $*变量也不起作用。 (POSIX 的数量非常少)

关于linux - 编写一个 Makefile 以自动获取文件名并创建具有相同名称的相应可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397394/

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