创建一个包含仅包含头文件的库的Makefile

问题描述:

这是我的第一个C++程序,也是我第一次创建一个Makefile,所以我很不熟悉它。创建一个包含仅包含头文件的库的Makefile

我有我的,其中包括GLM库这样的主文件raytracer.cpp:

#include "glm/glm.hpp" 

raytracer.cpp和GLM目录都在同一目录中。

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

glm library是仅头文件的库。那么我需要编译glm目录中的所有文件吗?或者只是glm.hpp?

如果只有在所有代码位于标题中而没有在相应源中定义任何内容的情况下,则不必在Makefile中指定任何内容,但是必须指定raytracer.cpp的规则。标题代码将自动插入include语句所在的位置。您只需如果你需要包括(库,以.so .A等),其他对象或共享对象)

欲了解更多信息如何创建简单的makefile看到这里指定它:How to make SIMPLE C++ Makefile?

如果你有一个单独的raytracer.cpp文件,它是你的应用程序,并且一些(本地)头文件是你需要的唯一的makefile内容(并且这只是为了在头文件改变时重新生成二进制文件)。

raytracer: raytracer.hpp glm/glm.hpp 

就是这样。

只需创建Makefile并运行make raytracer。 (你也可以在没有创建Makefile的情况下运行该命令,但是如果只有标题更改,将不知道重新生成二进制文件。)

如果您需要任何特殊标记/ etc。你可以使用内置的make变量来设置它们。像CFLAGSLDFLAGSLDLIBSCPPFLAGS

10.3 Variables Used by Implicit Rules的手册列表以及有关他们更多的参阅。

中间链接的票据上的接受答案也包含大量有用的信息。