GNU不会检测Windows上是否更改了文件

时间:2016-10-18 11:16:33

标签: c++ windows makefile

我是一名普通人,所以请提前道歉。

我有一个文件夹结构,其中foo.cpp位于项目的根目录中,所有其他.cpp文件位于另一个文件夹中的一个和所有标题中。每当我改变一些东西时,只要说一切都是最新的。

使用Windows 10。

代码来自

我的makefile:

OBJS = foo.o bar.o
CC = g++
INCLUDE_PATHS = -IC:\Mingw_libs\include\SDL2
LIBRARY_PATHS = -LC:\Mingw_libs\lib -Iheaders
COMPILER_FLAGS = -std=c++11
LINKER_FLAGS = -lmingw32 -lSDL2main -lSDL2 -lSDL2_image 

OUTPUTFILE = main

all: $(OBJS)
    $(CC) $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(LINKER_FLAGS) -o $(OUTPUTFILE)

clean:
    rm *.o
    rm *.exe

foo.o:
    $(CC) -c foo.cpp $(INCLUDE_PATHS) $(COMPILER_FLAGS) $(LIBRARY_PATHS) $(LINKER_FLAGS)

bar.o:
    $(CC) -c sources/bar.cpp $(INCLUDE_PATHS) $(COMPILER_FLAGS) $(LIBRARY_PATHS) $(LINKER_FLAGS)

3 个答案:

答案 0 :(得分:0)

你应该像这样声明目标依赖:

server <- function(input, output) {
          mydata<-reactive({
          inFile <- input$file1

          if (is.null(inFile))
          return(NULL)

          data<-read.csv(inFile$datapath, header=input$header, sep=input$sep, 
               quote=input$quote)

          data
          })

          output$contents <- renderTable({
          mydata()
          })

          output$summary <- renderTable({

          m<-lm(mydata()[,1]~mydata()[,2])
          summary(m)$r.squared

          })

          }


   shinyApp(ui, server)

否则make现在不会检查文件是否有变化。

答案 1 :(得分:0)

您的makefile与foo.obar.o无依赖关系。

all: $(OBJS)
    $(CC) $(OBJS) $(INCLUDE_PATHS) $(LIBRARY_PATHS) $(LINKER_FLAGS) -o $(OUTPUTFILE)

all取决于$(OBJS)。因此,当$(OBJS)中的某个文件发生更改时,将运行该步骤。

这说foo.o取决于什么:

foo.o:
    $(CC) -c foo.cpp $(INCLUDE_PATHS) $(COMPILER_FLAGS) $(LIBRARY_PATHS) $(LINKER_FLAGS)

您需要添加依赖项:

foo.o: foo.cpp
    $(CC) -c foo.cpp $(INCLUDE_PATHS) $(COMPILER_FLAGS) $(LIBRARY_PATHS) $(LINKER_FLAGS)

请注意,:之后的空格通常需要是制表符,而不是实际空格。

答案 2 :(得分:0)

您需要向目标添加依赖项。 Make有语法

target : prerequisite
    command

所以在你的情况下:

foo.o: foo.cpp
    $(CC) -c $< $(INCLUDE_PATHS) $(COMPILER_FLAGS) $(LIBRARY_PATHS) $(LINKER_FLAGS)

bar

相同

$<是第一个先决条件的占位符。因此,您不必两次输入foo.cpp

您可以在此处查看更多自动变量:https://www.gnu.org/software/make/manual/make.html#Automatic-Variables