gpt4 book ai didi

c++ - CMake 如何设置 src 根目录以便始终从根目录而不是相对路径查找头文件?

转载 作者:行者123 更新时间:2023-11-30 03:31:05 24 4
gpt4 key购买 nike

我有关于包含头文件的问题。

错误信息

In file included from /path/to/src/main.cpp:1:
/path/to/src/dirA/testA.h:1:10: fatal error: 'common/util.h' file not found
#include "common/util.h"

目录

├── dirA
│ └── testA.h
├── common
│ └── util.h
└── main.cpp

main.cpp

#include "dirA/testA.h"

int main()
{}

testA.h

#include "common/util.h" // <--- Here is the error point

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

add_definitions("-std=c++11")

add_executable(main
main.cpp
)

我发现下面的方式可以,但是我不想考虑文件路径关系。

#include "../common/util.h"

更新 1

感谢 Mark Farrugia 的回答,解决了构建错误。但是,我更喜欢“common/util.h”而不是“util.h”,因为路径很容易理解。它可能会避免重复的定义。

testA.h

#include "util.h"

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

add_definitions("-std=c++11")

include_directories("common")

add_executable(main
main.cpp
)

最佳答案

使用 CMake 的 include_directories 命令。

https://cmake.org/cmake/help/v3.0/command/include_directories.html

以下将包含项目范围内 common 目录中的所有文件:

include_directories(common);

将其用作:

#include <util.h>

或者如果你想在#include指令中使用文件夹:

include_directories(.)

通过这种方式,您可以执行以下操作:

#include <common/util.h>

关于c++ - CMake 如何设置 src 根目录以便始终从根目录而不是相对路径查找头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44511590/

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