gpt4 book ai didi

c++ - 使用 cmake 制作项目源目录的头文件后代

转载 作者:行者123 更新时间:2023-11-28 05:33:59 28 4
gpt4 key购买 nike

Google C++ Style Guide提到项目的所有头文件都应列为项目源目录的后代,而无需使用 UNIX 目录快捷方式。 (当前目录)或 .. (父目录)。我如何才能在下面简要描述的项目中做到这一点。

我的项目目录层次是这样的:

  • 图形引擎
    • header_files.h
    • source_files.cc
    • CMakeLists.txt (1)
    • 浅色
      • CMakeLists.txt (2)
      • header_files.h
      • source_files.cc
    • 相机
      • CMakeLists.txt (3)
      • header_files.h
      • source_files.cc
    • 核心
      • CMakeLists.txt (4)
      • header_files.h
      • source_files.cc

这些是 CMakeLists.txt 文件的内容:

CMakeLists.txt (一)

add_library(GraphicsEngineLib source_files.cc)
target_link_libraries(GraphicsEngineLib LightLib CameraLib CoreLib)
add_subdirectory(Light)
add_subdirectory(Camera)
add_subdirectory(Core)

CMakeLists.txt (2)

add_library(LightLib source_files.cc)

CMakeLists.txt (3)

add_library(CameraLib source_files.cc)

CMakeLists.txt (4)

add_library(CoreLib source_files.cc)

现在,例如,当我想将 Camera 文件夹中的头文件包含到 Core 文件夹中的文件中时,我必须使用 ../Camera/header_file.h 但我想使用 GraphicsEngine/Camera/header_file.h。我该怎么做?

最佳答案

我过去所做的是在顶级 CMakeLists.txt 中设置它(它应该在您的 GraphicsEngine 目录中):

SET(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/..")

INCLUDE_DIRECTORIES(
${PROJECT_ROOT}
)

哪里根据 this , CMAKE_CURRENT_SOURCE_DIR

this is the directory where the currently processed CMakeLists.txt is located in

请注意,通过以这种方式定义 Project_Root,您的 GraphicsEngine 项目也可以#include sister 的 header 项目到 GraphicsEngine

希望这对您有所帮助。

关于c++ - 使用 cmake 制作项目源目录的头文件后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755480/

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