[英]How to produce a makefile that runs multiple programs after each other in c?
我写了两个程序。 第一个程序ProgramOne为第二个程序ProgramTwo创建输入文件(这两个程序没有共同的文件,ProgramOne编写的输出只是ProgramTwo的输入)。 有时,运行第一个程序需要花费一些时间,但有时需要花费几秒钟的时间,具体取决于我要模拟的尺寸。
因此,我想将所有文件放入一个文件夹,并创建一个makefile,该makefile能够使命令运行:
前两个并不是那么难写,但是第三个是问题(因此,现在我能够运行ProgramOne,然后运行ProgramTwo,这将在终端中带我两个命令,但是我想制作一个在某些情况下也是如此)。 如何向编译器明确说明我希望两个程序相互执行。
目前,我有一个相当标准的makefile,但是我编写了以下内容:
( 请注意 ,programone.c包含一个主要功能,并且仅包含一个主要功能,具体取决于SRCS(ProgramTwo的文件))
( 另一个重要说明 :要运行ProgramTwo,我需要指定一些参数。在终端中,我将编写: ./RunProgramTwo -v results
。无论何时我想./RunProgramTwo -v results
运行这两个程序,我该如何指定这些参数? ?)
(我也省略了一些内容,例如clean和distclean命令,但我认为它们与这种情况无关。但是,如果您认为如此,我将根据要求提供完整的makefile)
NVCC = nvcc
NVCFLAGS = -arch=sm_30
CFLAGS = -Wall -pedantic -g
LDLIBS = -lz -lpthread
SRCS := allfiles.c
OBJS := allfiles.o
all: .depend RunProgramOne RunProgramTwo RunAll
RunProgramOne: $ programone.o
${NVCC} ${NVCFLAGS} ${LDLIBS} $^ -o $@
RunProgramTwo: ${OBJS} main.o
${NVCC} ${NVCFLAGS} ${LDLIBS} $^ -o $@
RunAll: RunProgramOne RunProgramTwo
depend:
${NVCC} -M ${SRCS} > .depend
.depend: ${SRCS} makefile
${NVCC} -M ${SRCS} > .depend
这似乎没有完成任务,因为当我调用./RunAll时,我只是让ProgramTwo运行。
请注意,我目前正在考虑将两个程序彼此分离的解决方案。 我还可以将ProgramOne中的main函数变成一个函数,然后在ProgramTwo main函数的最开始处调用它。 这样,我可以为我的第三个选项(即RunAll)轻松生成一个makefile命令,但是后来我不知道如何实现前两个选项。
我希望有一个解决方案,使我的两个程序解耦,但是,如果不可能,请随时告诉我可以进行此工作的任何可能方式。
我已经查看了关于makefile的基本信息(简单的教程),并查看了makefile本身的手册,但是似乎找不到解决方案。
任何帮助是极大的赞赏。
这个目标什么都不会运行:它只是声明先决条件,但是您没有配方(配方是传递给shell并执行的东西):
RunAll: RunProgramOne RunProgramTwo
如果要此目标运行程序,则必须编写一个执行此操作的配方:
RunAll: RunProgramOne RunProgramTwo
./RunProgramOne
./RunProgramTwo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.