我是第一次使用makefile,我想同时执行两个文件。它是一个服务器和一个客户端文件,每个文件都有自己的主文件,两个文件相互通信。到目前为止,我已经编写了以下 Makefile:
all: server client
server: server.c
gcc server.c -o server
./server
client: client.c
gcc client.c -o client
./client
所以我想先启动服务器,以便客户端之后可以连接到它。这是我的问题: 如果我只执行 makefile,服务器就会启动。是否可以在服务器之后直接启动客户端而不是一次只启动一个文件?
最佳答案
尝试从 Makefile 构建和运行程序是非常不寻常的(例如,运行自动回归测试除外。)
通常,您运行 make,然后运行代码。就个人而言,我会在另一个终端窗口中启动服务器,然后在第一个终端窗口中运行客户端。
但是如果您确实想从 Makefile 执行此操作,您可以尝试以下操作:
all: server client run
server: server.c
gcc server.c -o server
client: client.c
gcc client.c -o client
run:
./server &
./client
killall server
最后一行在客户端完成后关闭服务器。如果服务器有一些其他的 self 关闭方式,这可能不是必需的,但如果没有,您最终会得到大量服务器进程的副本。
您可能会发现编写单独的 shell 脚本来运行测试会更容易。
关于c - GNU Makefile并行执行两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442723/