创建包含仅标头库的Makefile 这是我的第一个C++程序,也是我第一次创建一个MaX文件,所以我对它非常陌生。

创建包含仅标头库的Makefile 这是我的第一个C++程序,也是我第一次创建一个MaX文件,所以我对它非常陌生。,c++,compilation,makefile,C++,Compilation,Makefile,我的主文件raytracer.cpp包含如下glm库: #include "glm/glm.hpp" raytracer.cpp和glm目录位于同一目录中 如何为此项目创建makefile 是一个只有标题的库。那么我必须编译glm目录中的所有文件吗?或者只指定glm.hpp?如果且仅当所有代码都在标题中,且相应的源中未定义任何内容,则不必在Makefile中指定任何内容,只需指定raytracer.cpp的规则。标题代码将自动插入包含语句的位置。如果需要包含其他对象或共享对象(如.so.a等中

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

#include "glm/glm.hpp"
raytracer.cpp和glm目录位于同一目录中

如何为此项目创建makefile


是一个只有标题的库。那么我必须编译glm目录中的所有文件吗?或者只指定glm.hpp?

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


有关如何创建简单makefiles的更多信息,请参见此处:

如果您有一个作为应用程序的
raytracer.cpp
文件和一些(本地)头文件,则您需要的唯一makefile内容(仅在头文件更改时重建二进制文件)为

就这样

只需创建
Makefile
并运行
makeraytracer
。(您也可以在不创建
Makefile
的情况下运行它,但如果只有头更改,make将不知道如何重新生成二进制文件。)

如果需要任何特殊标志/等,可以使用内置的make变量设置这些标志。例如
CFLAGS
LDFLAGS
LDLIBS
CPPFLAGS
,等等

有关列表和更多信息,请参阅手册中的

midor链接到的票据上的公认答案也包含许多有用的信息

raytracer: raytracer.hpp glm/glm.hpp