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

伤心的蛋

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

#include "foo.hpp"

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

我已经尝试过了

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

但这是行不通的。甚至可以在cmake级别包括头文件而在cpp文件中不包括头文件吗?如果是,如何?

YSC

是的,但是你不应该。

您可以-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. 是一个骇人的解决方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章