You need to run the file on the server. I wrote a program from several modules, but I know absolutely nothing about compiling makefiles.
I found a ready-made one that exactly fits my needs, only when I launch it, it writes:

** * missing separator. Stop

Can anyone help in a couple of minutes to arrange the tabs correctly and put them into working condition?

# Macros CC = gcc COMP_FLAG = -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG LIB_FLAG = -L. -lmtm # Main target tests: memcache_test my_set_test cache_test user_test # Targets make <file> user_test: user_test.o user.o $(CC) user_test.o user.o $(LIB_FLAG) -o $@ memcache_test: memcache_test.o memcache.o user.o cache.o $(CC) memcache_test.o memcache.o user.o cache.o $(LIB_FLAG) -o $@ cache_test: cache_test.o cache.o $(CC) cache_test.o cache.o $(LIB_FLAG) -o $@ my_set_test: my_set_test.o my_set.o $(CC) my_set_test.o my_set.o -o $@ # Targets make <file>_test.o user_test.o: tests/user_test.c user.h tests/test_utilities.h map.h set.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) tests/$*.c memcache_test.o: tests/memcache_test.c tests/test_utilities.h memcache.h map.h cache.h set.h list.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) tests/$*.c cache_test.o: tests/cache_test.c cache.h tests/test_utilities.h set.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) tests/$*.c my_set_test.o: my_set/my_set_test.c tests/test_utilities.h my_set/my_set.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) my_set/$*.c # Targets make <file>.o memcache.o: memcache.c memcache.h map.h cache.h list.h set.h user.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) $*.c user.o: user.c user.h set.h map.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) $*.c cache.o: cache.c cache.h set.h $(CC) -c $(COMP_FLAG) $(LIB_FLAG) $*.c my_set.o: my_set/my_set.c my_set/my_set.h $(CC) -c $(COMP_FLAG) my_set/$*.c # Target runs all test files run: run_my_set_test run_cache_test run_memcache_test run_user_test run_clean: clean run run_my_set_test: my_set_test ./my_set_test run_cache_test: cache_test ./cache_test run_memcache_test: memcache_test ./memcache_test run_user_test: user_test ./user_test # Target remove all <*_test> and <*.o> files clean: clean_o clean_test clean_test: rm -f *_test clean_o: rm -f *.o 

    1 answer 1

    where you see the indents from the first column, replace the whole non-displayable (up to the first displayed character) with a single tab character.

    and in the second part, your tab characters obviously disappeared somewhere. I give this part:

     run_my_set_test: my_set_test ./my_set_test run_cache_test: cache_test ./cache_test run_memcache_test: memcache_test ./memcache_test run_user_test: user_test ./user_test # Target remove all <*_test> and <*.o> files clean: clean_o clean_test clean_test: rm -f *_test clean_o: rm -f *.o 

    writes:

    ** * missing separator. Stop

    Usually, the make program also reports the line number where the error was found.

    • Thank you, exactly, did not notice. Corrected. Writes: Nothing to be done for `makefile '. As far as I understand, the file itself is compiled correctly, now you need to understand the content and the essence of its action. - Ilya.K.
    • @ Ilya.K., You first run the program, and then you figure out what they should do? such an approach can lead to not very good consequences. - aleksandr barakin
    • She wrote for the same job as mine. I will clarify. We wrote several modules that are used in the main module. Makefile as part of the job, which seems to be the whole thing to run to run an automatic test. Therefore, the names of all modules are the same. It should work) I understand on the go. - Ilya.K.