В файле GPR Adacore, как я могу установить компилятор включить пути поиска для C++

У меня есть код на C++, который мне нужно скомпилировать с помощью Adacore GNAT Programming Studio.

Один файл (SomeHeader.h) находится в общем каталоге (../../Common/) относительно моего файла GPR.

Наше соглашение для C++ включает директивы использовать

#include "Common/SomeHeader.h"

Независимо от того, что я делаю, я не могу заставить GprBuild найти "Common/SomeHeader.h". Я следовал приведенным здесь инструкциям в AdaGem 108 с изменениями для C++.

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

а также

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

Кажется, все это не работает для меня во время gprbuild, и, к сожалению, я не могу получить команду backend, которую использует gprbuild, даже после увеличения детализации сборки.

Я вижу некоторые временные файлы в сообщениях сборки, но они удаляются, прежде чем я могу получить к ним доступ.

Я использую Adacore GPS 17.1 на Windows 10 i686-pc-mingw32, GNAT Pro 17.1.

Кто-нибудь знает, как включить пути поиска, работающие в Gprbuild Adacore?

2 ответа

Решение

Я не пытался использовать gprbuild для компиляции исходного текста на C++, но я полагаю, что он работает более или менее как в Ada, где вы добавляете соответствующие каталоги в Source_Dirs атрибут:

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

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

   [...]
end Cookie;

Если вы хотите использовать относительные пути, и вы не можете использовать -I помните, что текущий каталог во время компиляции кода на C++ установлен в каталог obj, настроенный для grp.

Так что, если каталог, который вы хотите включить, расположен на C:\Foo\Bar\src\include\ и ваш каталог GRP obj находится на C:\Foo\Bar\env\gpr\obj тогда ваш относительный путь нужно будет использовать -I..\..\..\src\include

Другие вопросы по тегам