How to check if a file exists in a makefile

后端 未结 3 1783
执笔经年
执笔经年 2021-02-13 06:40

I have a makefile template to compile a single DLL (for a plugin system). The makefile of the user looks like this:

EXTRA_SRCS=file1 file2
include makefile.in
         


        
3条回答
  •  盖世英雄少女心
    2021-02-13 07:13

    You didn't specify what compiler(s) you are using, but if you have access to gcc/g++ you can use the -MM option.

    What I do is create a file with the extension of .d for every .c or .cpp file, and then "include" the .d files. I use something like this in my Makefile:

    %.d: %.c
            gcc $(INCS) $(CFLAGS) -MM $< -MF $@
    
    %.d: %.cpp
            g++ $(INCS) $(CXXFLAGS) -MM $< -MF $@
    

    I then create the dependencies like this:

    C_DEPS=$(C_SRCS:.c=.d)
    CPP_DEPS=$(CPP_SRCS:.cpp=.d)
    DEPS=$(C_DEPS) $(CPP_DEPS)
    

    and this at the bottom of the Makefile:

    include $(DEPS)
    

    Is this the kind of behavior you're going for? The beauty of this method is that even if you're using a non-GNU compiler for actual compiling, the GNU compilers do a good job of calculating the dependencies.

提交回复
热议问题