gpt4 book ai didi

c++ - 如何在 CMakeLists.txt 中包含 h/hpp 头文件而不是 cpp 或其他 hpp 文件

转载 作者:行者123 更新时间:2023-11-30 03:14:54 27 4
gpt4 key购买 nike

我想知道是否可以直接在 CMakeLists.txt 中包含头文件,而不是 cpp 或 hpp 文件。我正在做一个项目,所有 cpp 文件都需要包含一些 hpp 文件。我可以添加

#include "foo.hpp"

在每个 cpp 文件中,但最好在 CMakeLists.txt 级别管理包含并避免在每个 cpp 文件中添加 #include "foo.hpp"

我已经试过了

 target_include_directories(${PROJECT_NAME} PRIVATE
"${PROJECT_PATH}/bar/foo.hpp")

但它不起作用。甚至可以在不包含 cpp 文件的情况下在 cmake 级别包含头文件吗?如果是,怎么办?

最佳答案

是的,但你不应该。

您可以通过调整变量 -include 使 CMake 发出依赖于编译器的编译标志(例如 GnuCC 的 CMAKE_CXX_FLAGS) :

if(GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -include foo.hpp")
elseif(MSVC)
...
endif()

虽然这是可取的,因为它:

  1. 是很多无用的工作;
  2. 利用 CMake(其任务是定义与编译器无关的构建)来定义依赖于编译器的编译;
  3. 任何阅读您的代码的人都会大吃一惊;
  4. 破坏 IDE 遵循标识符的能力(例如 Visual Studio 的“查找定义”);
  5. 是一个 hacky 解决方法。

关于c++ - 如何在 CMakeLists.txt 中包含 h/hpp 头文件而不是 cpp 或其他 hpp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57390149/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com