Проблема с угловыми скобками <> при использовании xtensor в visual studio - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь использовать xtensor впервые в Visual Studio 2019, и я получаю сообщения об ошибках типа «не могу открыть исходный файл« xtl / xsequence.hpp ».

Папка 'xtl' правильно расположена в каталоге.В файле написано #include <xtl/xsequence.hpp>, и ошибка исчезает, когда я изменяю ее на #include "xtl/xsequence.hpp".Я мог бы просто изменить это, но ошибка происходит 73 раза в других файлах.Есть ли способ исправить с помощью 73 отдельных изменений?

Вот что я сделал до сих пор:

Исходная проблема, которая появляется много раз.

The original problem

Исправление включает в себя изменение <> на "".

The fix

Местоположение xtl

Location

ЧтоЯ пытался сделать это до сих пор.

What I've tried (1)

What I've tried (2)

Снимок типов ошибок, которые все еще отображаются.Errors still

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

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

На практике все, что на самом деле означает, что <> ищет в указанном наборе каталогов, тогда как "" смотрит первым в локальном каталоге.Вы можете добавить каталог для <>, чтобы проверить, используя опцию компилятора.Для msvc этот параметр равен /I.

0 голосов
/ 25 сентября 2019

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

Компилятор ищеткаталоги в следующем порядке:

1. Если указано с помощью директивы #include в форме двойных кавычек, сначала выполняется поиск в локальных каталогах.Поиск начинается в том же каталоге, что и файл, содержащий оператор #include.Если при этом не удается найти файл, выполняется поиск в каталогах открытых в данный момент включаемых файлов в обратном порядке, в котором они были открыты.Поиск начинается в каталоге родительского включаемого файла и продолжается вверх по каталогам любых включаемых файлов дедушки и дедушки.

2, если указано с помощью директивы #include в форме угловых скобок, или если поиск в локальном каталоге имеетне удалось выполнить поиск в каталогах, указанных с помощью параметра / I, в том порядке, в котором CL обнаруживает их в командной строке.

3, каталоги, указанные в переменной среды INCLUDE.

Я предлагаю вамможет попытаться добавить путь к файлу xtl / xsequence.hpp в дополнительные каталоги включения (свойство -> c / c ++ -> General -> дополнительные каталоги включения)

enter image description here

...