繁体   English   中英

如何生成一个在c中依次运行多个程序的makefile?

[英]How to produce a makefile that runs multiple programs after each other in c?

我写了两个程序。 第一个程序ProgramOne为第二个程序ProgramTwo创建输入文件(这两个程序没有共同的文件,ProgramOne编写的输出只是ProgramTwo的输入)。 有时,运行第一个程序需要花费一些时间,但有时需要花费几秒钟的时间,具体取决于我要模拟的尺寸。

因此,我想将所有文件放入一个文件夹,并创建一个makefile,该makefile能够使命令运行:

  1. ProgramOne
  2. ProgramTwo
  3. 这两个程序紧接着

前两个并不是那么难写,但是第三个是问题(因此,现在我能够运行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM