我的Makefile在下面,我使用.d文件进行自动依赖,但是当我修改一些.h文件时它不起作用,这很奇怪,但为什么.. 谢谢你的帮助
PROGRAM := a.out
SRCDIRS := ./src/access
INCLUDE := -I./include/access
SRCEXTS := .cpp
CPPFLAGS := -g -Wall
LDFLAGS :=
CXX = g++
RM = rm -f
SHELL = /bin/sh
SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
OBJS = $(foreach x,$(SRCEXTS), \
$(patsubst %$(x),%.o,$(filter %$(x),$(SOURCES))))
DEPS = $(patsubst %.o,%.d,$(OBJS))
.PHONY : all objs clean cleanall rebuild
all : $(PROGRAM)
objs : $(OBJS)
%.o : %.cpp
$(CXX) -c $(CPPFLAGS) $< -o $@ $(INCLUDE)
$(PROGRAM) : $(OBJS)
$(CXX) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
rebuild: clean all
clean :
@$(RM) $(OBJS) $(DEPS)
cleanall: clean
@$(RM) $(PROGRAM)
-include $(DEPS)
%.d : %.cpp
rm -f $@; $(CXX) -MM $< $(INCLUDE) > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
答案 0 :(得分:0)
没有任何因素导致<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffe8f2fe"
android:orientation="vertical">
<TextView
android:id="@id/checkInternet"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/no_internet"
android:textSize="@dimen/bodyTextSize" />
<ProgressBar
android:id="@id/progressBar1"
style="?android:attr/progressBarStyleInverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<GridView
android:id="@id/gridView1"
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0"
android:gravity="center"
android:numColumns="auto_fit"
android:stretchMode="columnWidth" />
</LinearLayout>
</LinearLayout>
<com.github.pedrovgs.DraggableView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:draggable_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/draggable_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
draggable_view:bottom_view_id="@+id/listV_main"
draggable_view:enable_minimized_horizontal_alpha_effect="false"
draggable_view:top_view_height="200dp"
draggable_view:top_view_id="@+id/youtube_id"
draggable_view:top_view_margin_bottom="10dp"
draggable_view:top_view_margin_right="10dp"
draggable_view:top_view_resize="true"
draggable_view:top_view_x_scale_factor="2.3"
draggable_view:top_view_y_scale_factor="2.3">
<com.google.android.youtube.player.YouTubePlayerView
android:id="@id/youtube_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@id/listV_main"
android:background="#ffffff"
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0" />
</com.github.pedrovgs.DraggableView>
</RelativeLayout>
模式运行,因为%.d
不依赖于它。因此,根据您的%.o
,Make只使用磁盘上已存在的makefile
个文件。
使用您声明的依赖项,$(DEPS)
文件只有在依赖它的东西需要它时才会重新生成,并且相应的%.d
文件已被修改。
将%.cpp
添加到%.d
依赖项应该添加所需的依赖项,但您可能仍需要确保%.o
以某种方式运行%.d
。
理想情况下,每个-include
文件应该依赖于相应的%.d
文件所依赖的%.h
个文件,但是鸡和鸡蛋问题的习惯解决方案是强制重建%.cpp
文件的使用频率超出了严格要求。