我是Java开发人员,我从不必担心要包含文件或将BUILD文件弄乱。
每当我需要编写C++代码时,事情就会变得更加复杂。我可以考虑将* .h文件创建为Java中的接口(interface),但是弄清楚如何编写构建文件以及应该包括哪些顺序类让我很头疼。
有没有简单的方法可以考虑这一点?您怎么知道什么时候包括一些东西或如何正确地将它们分离出来。例如,通常是处理具有数十个相互依赖的源文件的项目的好方法。
是否有一些框架可以使创建BUILD文件或管理所有样板编译工作更容易?
最佳答案
CMake是到目前为止我能找到的最好的构建系统。您给它一个源文件列表,它将自动扫描依赖关系并仅重新编译更改的文件。尽管它的语法有点可笑,并且文档访问不是很方便,但是CMake在可用性和简单性方面击败了GNU自动工具,并且可以在所有主要平台上使用。
关于正在发生的事情的“心理模型”,请牢记以下几点。
.cpp
文件完全独立于其他.cpp
文件进行编译。 .cpp
文件。因此,事情需要按照正确的顺序进行。 #include
指令与将 header 复制/粘贴到.cpp
文件中相同。 Foo.hpp
,而是看看是否可以只声明class Foo;
。 .cpp
文件时,将生成一个.o
文件,其中包含与.cpp
中定义的功能完全相同的实现。未在其中定义的功能的引用留给链接器解决。 关于c++ - 如何掌握C++链接/依赖关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3482894/