gpt4 book ai didi

c++ - 如何使用 CMake 正确添加包含目录

转载 作者:IT老高 更新时间:2023-10-28 11:27:45 25 4
gpt4 key购买 nike

大约一年前,我询问了 header dependencies in CMake .

我最近意识到问题似乎是 CMake 认为这些头文件是项目的外部。至少,在生成 Code::Blocks 项目时,头文件不会出现在项目中(源文件会出现)。因此,在我看来,CMake 认为这些 header 是项目的外部,并且不会在依赖项中跟踪它们。

在 CMake 教程中的快速搜索只指向 include_directories 似乎没有做我希望的事情......

向 CMake 发出信号表明特定目录包含要包含的 header 以及应由生成的 Makefile 跟踪这些 header 的正确方法是什么?

最佳答案

必须做两件事。

首先添加要包含的目录:

target_include_directories(test PRIVATE ${YOUR_DIRECTORY})

如果您遇到不支持 target_include_directories 的非常旧的 CMake 版本(2.8.10 或更早版本),您也可以改用旧的 include_directories:

include_directories(${YOUR_DIRECTORY})

然后您还必须将头文件添加到当前目标的源文件列表中,例如:

set(SOURCES file.cpp file2.cpp ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)
add_executable(test ${SOURCES})

这样,头文件将作为依赖项出现在 Makefile 中,例如在生成的 Visual Studio 项目中(如果您生成一个)。

如何将这些头文件用于多个目标:

set(HEADER_FILES ${YOUR_DIRECTORY}/file1.h ${YOUR_DIRECTORY}/file2.h)

add_library(mylib libsrc.cpp ${HEADER_FILES})
target_include_directories(mylib PRIVATE ${YOUR_DIRECTORY})
add_executable(myexec execfile.cpp ${HEADER_FILES})
target_include_directories(myexec PRIVATE ${YOUR_DIRECTORY})

关于c++ - 如何使用 CMake 正确添加包含目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13703647/

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