gpt4 book ai didi

c++ - Cmake 包含系统和程序文件的路径

转载 作者:行者123 更新时间:2023-11-30 16:36:34 27 4
gpt4 key购买 nike

我想知道是否有可能配置 cmake,如果 #include<...> 中包含头文件,则可能会产生影响。或#include "..."

假设我有一个这样的项目:

src
foo.h
foo.c
lib
foo.h
foo.c

如何实现添加文件src/foo.h通过写作#include "foo.h"如果头文件包含在 #include <foo.h> 中文件位于 lib/foo.h已加载?

它总是从第一个 include_directories() 加载文件命令

include_directories(src)
include_directories(lib)

编辑

我项目中当前的问题:我有一个名为 string.h 的文件。其中包含一些自定义文本处理的函数。现在我遇到的问题是,如果我写 #include <string.h>我的自定义文件已加载,但我期望系统文件 tring.h 。我不想重命名我的自定义文件,也不想将其移动到文件夹中以包含它,例如 #include "custum/string.h"

我想要的是:

#include <string.h> // load file from system library
#include "string.h" // load my custom file

我在IDE Keil中这样使用它,但我不知道是否可以用cmake来完成

最佳答案

更改包含顺序

include_directories(lib)
include_directories(src)

您需要将整个代码放在 src 中。在这种情况下#include "foo.h"在解析当前文件的同一目录中开始搜索文件。 #include <foo.h>"include_directories 的顺序开始在包含目录中搜索.

顺便说一句,做这样的事情是一种不好的做法。应首先搜索您的文件,然后搜索 lib 文件。更好的方法是这样做

include_directories(src)
include_directories(parent_of_lib)

使用#include "foo.h"#include <foo.h>对于您自己包含的文件和 #include <lib/foo.h>对于第三方包含的文件。

关于c++ - Cmake 包含系统和程序文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48381439/

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