Я написал две программы. Первый, ProgramOne, создает входные файлы для второй программы, ProgramTwo (две программы не имеют общих файлов, выход, написанный ProgramOne, является всего лишь вкладом ProgramTwo). Иногда запуск первой программы занимает некоторое время, но в другое время требуется всего несколько секунд, в зависимости от размеров, на которых я имитирую.Как создать файл makefile, который запускает несколько программ друг за другом в c?
Поэтому я хотел бы, чтобы поместить все мои файлы в одну папку и создать Makefile, который способен сделать команды для запуска:
- ProgramOne
- ProgramTwo
- Эти две программы сразу после друг друга
Первые два не так сложно написать, третий - проблема (так что в данный момент я могу запустить ProgramOne, а затем запустить ProgramTwo, что заставляет меня tw o команд в терминале, но я хотел бы также сделать эту команду в некоторых случаях). Как я могу разъяснить компилятору, что я хочу, чтобы две программы исполнялись друг за другом.
На данный момент у меня довольно стандартный Makefile, но я написал следующее:
(примечания что programone.c содержит основную функцию, и только основную-функцию, в зависимости от ничего от Суданского Красного Полумесяца (файлы для ProgramTwo))
(Еще одно важное замечание: бежать ProgramTwo, мне нужно указать некоторые аргументы в терминале я бы написать:.. ./RunProgramTwo -v results
Как мне нужно указать эти аргументы, когда я хотел для запуска двух программ друг за другом?)
(Я также оставил некоторые вещи, как чистую и дикскую команду, но я не думаю, что они имеют отношение к этому делу. Если вы так думаете, однако, я представлю свою полную 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 [email protected]
RunProgramTwo: ${OBJS} main.o
${NVCC} ${NVCFLAGS} ${LDLIBS} $^ -o [email protected]
RunAll: RunProgramOne RunProgramTwo
depend:
${NVCC} -M ${SRCS} > .depend
.depend: ${SRCS} makefile
${NVCC} -M ${SRCS} > .depend
Это не похоже, чтобы сделать работу, как я просто получить ProgramTwo работает, когда я призываю ./RunAll.
Обратите внимание, что я сейчас думаю о решении, где мои две программы отделены друг от друга. Я также могу сделать основную функцию в ProgramOne функцией, которую я затем вызываю в самом начале основной функции ProgramTwo. Таким образом, я могу легко сгенерировать команду makefile для третьего из моих параметров, а именно RunAll, но тогда я не знаю, как я могу добиться первых двух.
Я бы предпочел решение, чтобы мои две программы были развязаны, но если это невозможно, не стесняйтесь говорить мне все возможные способы, чтобы я мог выполнить эту работу.
Я уже искал основную информацию о make-файлах (простые учебники) и смотрел руководство для самого make-файла, но, похоже, я не нашел решения.
Любая помощь очень ценится.
Ах, о котором я не упоминал. ** Я хотел бы, чтобы они работали на одном и том же терминале один за другим. ** – Tim
Я использую стандартный терминал в Ubuntu 14.04. Я, однако, понятия не имею, что это такое. – Tim