我已经在该网站上阅读了关于add_executable
中CMake
函数用法的一系列问题,但是没有找到我的困惑的准确答案。
我的问题是为什么我们只在.cpp
函数中添加add_executable
个文件而不添加.hpp
文件?
我知道头文件就像相应的.cpp
文件中的函数和类的“索引”。但是,如果我们不将它们包括在add_executable
函数中,那么它们在构建过程中如何使用?
例如,当另一个源文件导入A.hpp
时将使用A.hpp
文件吗?但是然后A.hpp
不在add_executable
函数中...程序如何知道在哪里可以找到A.hpp
?
谢谢!
答案 0 :(得分:2)
头文件,通常 具有.h或.hpp扩展名,尽管并非总是如此-例如,C ++标准库头没有扩展名-由编译器“复制粘贴”到每个.cpp中(或.C或.cc)具有#include
指令来包含文件。
因此,构建最终可执行文件时,诸如CMake之类的构建系统不必了解它们-它们的内容已经通过将它们的代码文字包含在.cpp文件中来解决了。
但是,在指定依赖项时,构建系统需要了解这些文件-确保在更新这些文件中的任何文件时重新构建整个应用程序,并提供编译命令的正确包含路径。