繁体   English   中英

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

[英]How to include h/hpp header files in CMakeLists.txt instead of cpp or other hpp files

我想知道是否有可能直接在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")

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

是的,但是你不应该。

您可以通过调整变量CMAKE_CXX_FLAGS来制作CMake依赖于编译器的编译标志(例如, -include用于GnuCC):

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM