C++ CMake add_executable()使用.cpp文件还是.hpp文件?
我在这个网站上读到了很多关于C++ CMake add_executable()使用.cpp文件还是.hpp文件?,c++,build,cmake,C++,Build,Cmake,我在这个网站上读到了很多关于CMake中add_executable函数用法的问题,但没有找到我困惑的确切答案 我的问题是为什么我们只在add_executable函数中添加.cpp文件,而不添加.hpp文件 我知道头文件就像对应的.cpp文件中函数和类的“索引”。但是如果我们没有将它们包括在add\u executable函数中,那么它们在构建过程中是如何使用的呢 例如,当另一个源文件导入A.hpp时,是否会使用A.hpp文件?但是A.hpp不在add\u executable函数中。。。程序
CMake
中add_executable
函数用法的问题,但没有找到我困惑的确切答案
我的问题是为什么我们只在add_executable
函数中添加.cpp
文件,而不添加.hpp
文件
我知道头文件就像对应的.cpp
文件中函数和类的“索引”。但是如果我们没有将它们包括在add\u executable
函数中,那么它们在构建过程中是如何使用的呢
例如,当另一个源文件导入A.hpp
时,是否会使用A.hpp
文件?但是A.hpp
不在add\u executable
函数中。。。程序如何知道在哪里可以找到A.hpp
谢谢< P>头文件,通常有.h或.HPP扩展,虽然不是总是的,例如C++标准库头没有扩展——编译器“复制粘贴”到每个.CPP(或.c,或.cc),其中< <代码> >包含< /代码>指令以包含文件。
正因为如此,构建系统,比如CMake,在构建最终的可执行文件时不必知道它们——它们的内容已经通过将它们的代码直接包含到.cpp文件中来解释
但是,在指定依赖项时,生成系统需要了解这些文件,以确保在更新这些文件时重新生成整个应用程序,并为编译命令提供正确的包含路径。感谢您的及时回复。这是否意味着为
.hpp
文件计算#include
路径不是构建系统的工作?这是编译器的工作吗?@yuqli CMake通过“target_link_library”为其使用的一个或多个库提供的头文件找出包含路径,而编译器则为其他所有文件使用预定义的默认路径。但这与可执行文件的构建无关,所以这就是为什么add\u executable
没有它的原因。