创建包含仅标头库的Makefile

时间:2014-12-05 20:04:20

标签: c++ compilation makefile

这是我的第一个c ++程序,也是我第一次创建一个Makefile,所以我很不熟悉它。

我的主文件raytracer.cpp包含glm库,如下所示:

#include "glm/glm.hpp"

raytracer.cpp和glm目录位于同一目录中。

如何为此项目创建一个makefile?

glm library是仅限标头的库。所以我必须编译glm目录中的所有文件吗?或者只是glm.hpp?

2 个答案:

答案 0 :(得分:2)

IF,并且只有当所有代码都在标题中并且没有在相应的源中定义时,您不必在Makefile中指定任何内容,而是指定raytracer.cpp的规则。标题代码将自动插入include语句所在的位置。如果需要包含其他对象或共享对象(如.so .a等库),则只需指定它即可。

有关如何创建简单makefile的详细信息,请参阅此处:How to make SIMPLE C++ Makefile?

答案 1 :(得分:1)

如果您有一个raytracer.cpp文件是您的应用程序,而某些(本地)头文件是您需要的唯一makefile内容(这只是为了在标题更改时重建您的二进制文件)。

raytracer: raytracer.hpp glm/glm.hpp

就是这样。

只需创建Makefile并运行make raytracer即可。 (你也可以在不创建Makefile的情况下运行它,但如果只有标题发生变化,make将无法重建你的二进制文件。)

如果您需要任何特殊标志/等。您可以使用内置的make变量设置它们。与CFLAGSLDFLAGSLDLIBSCPPFLAGS等相同。

请参阅手册中的10.3 Variables Used by Implicit Rules以获取列表以及有关它们的更多信息。

中间链接的票证上接受的答案也包含很多有用的信息。