gpt4 book ai didi

directory - 如何让 g++ 搜索特定目录中的头文件?

转载 作者:行者123 更新时间:2023-12-03 07:56:08 25 4
gpt4 key购买 nike

我有一个项目(一个库),它被分割为几个目录,其中包含代码。我想让 g++ 在项目的根目录中搜索头文件,这样我就可以避免跨多个源文件的相同头文件的不同包含路径。

主要是root/目录有子目录A/ , B/C/ ,所有这些都有.hpp.cpp里面的文件。如果 A 中的某个源文件想要包含 file.hpp ,在 B 中,它必须这样做:#include "../B/file.hpp" .对于另一个 C 中的源文件也是如此。但是,如果 A 本身具有包含需要 file.hpp 的文件的子目录,那么,如果我决定移动文件(因为包含路径是 "../../B/file.hpp" ),这将是不一致的并且会导致错误。

此外,这也需要在其他项目中工作,这些项​​目位于 root/ 之外。 .我已经知道有一个选项可以将我的所有头文件手动复制到默认搜索目录中,但我想按照我描述的方式进行。

编辑:使用该库的所有程序必须仅使用 g++ prog.cpp lib.a -o prog 进行编译.这意味着永久设置 g++ 的包含路径!

最佳答案

A/code.cpp

#include <B/file.hpp>

A/a/code2.cpp
#include <B/file.hpp>

编译使用:
g++ -I /your/source/root /your/source/root/A/code.cpp
g++ -I /your/source/root /your/source/root/A/a/code2.cpp

编辑:

您可以使用环境变量来更改 g++ 查找头文件的路径。从手册页:

Some additional environments variables affect the behavior of the preprocessor.

   CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH

Each variable's value is a list of directories separated by a special character, much like PATH, in which to look for header files. The special character, "PATH_SEPARATOR", is target-dependent and determined at GCC build time. For Microsoft Windows-based targets it is a semicolon, and for almost all other targets it is a colon.

CPATH specifies a list of directories to be searched as if specified with -I, but after any paths given with -I options on the command line. This environment variable is used regardless of which language is being preprocessed.

The remaining environment variables apply only when preprocessing the particular language indicated. Each specifies a list of directories to be searched as if specified with -isystem, but after any paths given with -isystem options on the command line.

In all these variables, an empty element instructs the compiler to search its current working directory. Empty elements can appear at the beginning or end of a path. For instance, if the value of CPATH is ":/special/include", that has the same effect as -I. -I/special/include.



有多种方法可以更改环境变量。在 bash 提示符下,您可以执行以下操作:
$ export CPATH=/your/source/root
$ g++ /your/source/root/A/code.cpp
$ g++ /your/source/root/A/a/code2.cpp

你当然可以在你的 Makefile 等中添加它。

关于directory - 如何让 g++ 搜索特定目录中的头文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12654013/

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