2

我知道这是一个愚蠢的问题,但我是 C++ 的新手,它是开发环境,我想以正确的方式学习它。

我正在尝试学习 CMake 的工作原理。使用 CLion(动态生成CMakeList.txt),我看到当创建一个类时,.cpp.h都被添加到目标可执行文件中。但是当.h从调用中删除文件时add_executable,代码编译得很好,即使main.cpp那里有#include对该头文件的引用。

我的问题是向目标可执行文件添加标头是否是可选的?我通常使用不会CMakeList.txt为我生成的 VSCode,如果我应该这样做,我不想养成不将标头包含到目标可执行文件的习惯。

4

2 回答 2

1

add_executable只需获取它传递给编译器的文件列表。编译器会忽略任何带有常规头后缀的文件(可能是它无法识别为源文件的所有后缀)。因此,没有必要列出头文件,列出它们也不会导致问题——就编译而言。

某些 IDE 可能会将列出的头文件用于某些内部目的。我不确定 Clion 是否有。它的行为可能是为了方便使用另一个 IDE。

于 2020-04-06T10:19:04.927 回答
1

一般来说,我相信你应该

SET_SOURCE_FILE_PROPERTIES(${header_files} PROPERTIES HEADER_FILE_ONLY ON)

然后

LIST (APPEND ${project_sources} ${header_files})

. 使用 ${project_sources} 编译。

于 2020-04-06T10:20:16.803 回答