创建包含仅标头库的生成文件
Creating a Makefile that includes a header only library
这是我的第一个 c++ 程序,也是我第一次创建 Makefile,所以我对这一切非常陌生。
我有我的主文件光线追踪器.cpp其中包括如下所示的 glm 库:
#include "glm/glm.hpp"
光线追踪器.cpp和 GLM 目录位于同一目录中。
如何为此项目创建生成文件?
glm 库是仅标头库。那么我必须编译 glm 目录中的所有文件吗?或者只是glm.hpp?
如果,并且仅当所有代码都在标头中并且没有在相应的源中定义任何内容时,您才不必在 Makefile 中指定任何内容,而是指定光线跟踪器的规则.cpp。标头代码将自动插入 include 语句所在的位置。仅当您需要包含其他对象或共享对象(.so .a 等中的库)时,才需要指定它)
有关如何创建简单makefile的更多信息,请参阅此处:如何使SIMPLE C++Makefile?
如果你有一个raytracer.cpp
文件是你的应用程序和一些(本地)头文件,你需要的唯一makefile内容(这只是为了在头文件更改时重建你的二进制文件)是。
raytracer: raytracer.hpp glm/glm.hpp
就是这样。
只需创建Makefile
并运行make raytracer
即可。(您也可以在不创建Makefile
的情况下运行它,但如果只有标头更改,则 make 将不知道重建二进制文件。
如果您需要任何特殊标志/等,您可以使用内置的 make 变量设置它们。如CFLAGS
、LDFLAGS
、LDLIBS
、CPPFLAGS
等。
列表,请参阅手册中的 10.3 隐式规则使用的变量以及有关它们的更多信息。
midor 链接到的票证上接受的答案也包含许多有用的信息。
相关文章:
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 如何读取 TXT 文件并仅将 int 存储在 C 中
- C++文件包含多行
- CMake 如何强制third_party库将项目文件包含在当前项目源目录中?
- 确认二进制文件中仅存在 1 和 0
- 是否可以将要"ShellExecute"的文件包含在 dll 中?如果是这样,"ShellExecute"中的文件位置应该是什么?
- 使用共享库编译可执行文件时仅链接所需的符号
- C++ 逐行从文件(包含空格)读取数据
- 包含仅移动类型的类的构造函数应通过引用还是通过右值引用接收仅移动类型?
- 在 C++ 中,.h 文件包含文件但不起作用
- 生成的资源文件包含奇怪的包含文件
- 读取.csv文件并仅使用 C++ 存储到数组中<iostream>
- 如何在Qt Creator中包含仅提升标头库
- 可变参数类的文件包含问题
- 如何在文本文件中仅读取一行,该文本文件使用QT具有特定单词
- 为什么文件命令声明可执行文件包含"debug_info"
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 为什么将.HPP文件包含在.h文件中
- 检查文件是否仅包含Whitespace C
- 创建包含仅标头库的生成文件