2

我有一些需要使用 Adacore GNAT Programming Studio 编译的 C++ 代码。

一个文件 ( SomeHeader.h ) 位于相对于我的 GPR 文件的 Common 目录 ( ../../Common/ ) 中。

我们对 C++ 包含指令的约定是使用

#include "Common/SomeHeader.h"

无论我做什么,我都无法让 GprBuild 找到“Common/SomeHeader.h” 我按照AdaGem 108的说明进行了 C++ 修改

for Include_Switches ("c++") use ("-I ../../");

for Include_Path ("c++") use "../..";

在gprbuild期间,这似乎对我不起作用,令人沮丧的是,即使在将构建详细程度调高之后 ,我似乎也无法获得gprbuild正在使用的后端命令。

我在构建消息中看到了一些临时文件,但在我访问它们之前它们被删除了。

我在 Windows 10 i686-pc-mingw32、GNAT Pro 17.1 上使用 Adacore GPS 17.1。

有谁知道如何在 Adacore 的Gprbuild中获得包含搜索路径?

4

2 回答 2

3

如果您想使用相对路径,并且您对使用该-I标志一无所知,请注意,在您编译 c++ 代码时,当前目录被设置为为 grp 配置的 obj 目录。

因此,如果您要包含的目录位于C:\Foo\Bar\src\include\并且您的 grp obj 目录位于,C:\Foo\Bar\env\gpr\obj那么您的相对路径将需要使用-I..\..\..\src\include

于 2018-05-15T19:08:34.480 回答
2

我还没有尝试用它gprbuild来编译 C++ 源文本,但我想它或多或少像 Ada 一样工作,你将相关目录添加到Source_Dirs属性中:

project Cookie is
   for Languages use ("C++");

   for Source_Dirs use (".",
                        "../..");

   [...]
end Cookie;
于 2018-03-25T09:42:28.957 回答