Z.cpp
的编译失败。我修改了文件Z
中的类Z.h
的私有成员。我重新运行make
。然后Make
编译所有依赖于Z.h
:A.cpp
,B.cpp
,......的文件,没有人会如此愚蠢和迂腐,......,{{1 }},X.cpp
,在它最终到达Y.cpp
之前,由于我编辑Z.cpp
中的一个微不足道的错误而再次失败...
有没有办法让Z.h
适应?让它开始编译最近没编译的目标?
[PS]让我澄清一下:我当然知道Make
的任何修改都可能会破坏Z.h
,...,A.cpp
中的任何一项。当然,这些来源也需要重新编译。这个问题是关于编译顺序的启发式改进。
我不希望Y.cpp
学习任何有关C ++的知识。这对我来说是完全足够的,并且对许多人来说非常有帮助,如果Make
可以被教导推理如下:在我最后一次尝试编译Make
,..,A
,一切除Z
以外通过。即使我的用户努力修复Z
,Z
仍然比任何其他单个源文件更容易被破坏。因此,我现在将按照Z
,Z
,...,A
的顺序编译来源。因此,平均而言,我的用户将不得不等待我以错误终止。
答案 0 :(得分:0)
Make并不真正理解C ++,甚至是C语言。它以抽象的术语将文件依赖性理解为有向图。 A.o
取决于Z.h
,Z.o
也取决于make
。
此外,您更改了私人成员(即使A.o
会神奇地知道)并不意味着private
不受影响。内联了很多C ++代码,私有成员可以通过内联代码访问。 class Z
检查访问是否来自同一个Z.o
,而不是同一个文件make -j 8
。
通常,更好的解决方法是public interface OnItemClickListener {
void onItemClick();
}
while initializing your adapter class with listener implementation
public Adapter(OnItemClickListenerener listener){
this.listener = listener;
}
inside your view-holder:
viewHolder.itemView..setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.onItemClick();}
}
。为什么一次只构建一个文件?