2016-11-25 10 views
1

не могли бы вы помочь мне, отвечая на мой следующий вопрос о Visual Studio, включая поведение?Как справиться с фигурной скобкой включают директивы в Visual Studio?

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

-MyProject 
+---MyProject.sln 
+---MyProject.vcxproj 
+---MyProject.cpp 
+---CommonHeader.h 

-ExistingProject 
+---project 
+---+---ExistingProject.vcxproj 
+---source 
+---+---ExistingProject1.h 
+---+---ExistingProject2.h 
+---+---ExistingProject1.c 
+---+---ExistingProject2.c 

В начале, я даже не мог скомпилировать ExistingProject. В ExistingProject1.c следующее утверждение включают существует:

#include <ExistingProject1.h> 

От here я узнал, что в случае кронштейна-включает в себя, Visual Studio не ищет заголовок в том же каталоге, что и файл, который содержит заявление включения. Поэтому мой первый вопрос будет:

1) Верно ли, что я должен добавить»../source/"-Directory к Include Directories в ExistingProject.vcxproj, хотя файлы заголовков уже добавлен в проект Visual Studio?

Чтобы использовать структуры и функции ExistingProject, я должен включить ExistingProject2.h в свой MyProject.cpp. Но в рамках ExistingProject2.h это относится и к заявлению

#include <ExistingProject1.h> 

есть. Это приводит ко второму вопросу:

2) Верно ли, что я должен добавить»../ExistingProject/source/-Directory к Include Directories проекта MyProject.vcxproj а

?

И теперь приходит действительно странная проблема. Если какой-либо определить установлен, который должен быть установлен в пределах MyProject, то ExistingProject2.h также включает в себя внешний файл заголовка через

#include <CommonHeader.h> 

, который должен быть определен зависимый проект. Это приводит к моим последним вопросам :

3) Правда ли, что у меня есть только следующие два параметра для компиляции с этим внешним файлом заголовка?

  1. Мне нужно скопировать мой CommonHeader.h в «ExistingProject \ source \» - Directory во время проверки.
  2. Мне нужно добавить «.» - Directory в Include Directories проекта MyProject.vcxproj, и мне нужно добавить «../../MyProject/"-Directory к каталоги IncludeProject.vcxproj.

Второй вариант просто не имеет смысла. Является ли первый, действительно, моим единственным вариантом, связанным с этой формой-скобкой, является внешний файл заголовка?

И: Не должно быть, по крайней мере, место, рядом с файлом vcxproj, находиться внутри каталогов include файла заголовка, который используется в этом проекте?

Извините за глупое правописание.Я очень плохо объясняю. Желаю вам приятного уик-энда.

ответ

-1

В стандартных C и C++ #include <> предназначен для стандартных библиотек, которые будут искать компиляторы в каталогах include. #include "" для ваших собственных файлов и да, они относятся к каталогу файла .c или .cpp.

Теперь я на мобильный, теперь я могу отредактировать ответ с большим расширением, если вам это нужно.

+0

Большое спасибо за ваш ответ. – Allgaeuer

0

Когда вы положили #include <header.h> - Visual Studio будет искать его во всех указанных путях включения в настройках проекта, это включает в себя пути по умолчанию, где находится Windows SDK и стандартная библиотека. Смотрите этот скриншот, как пример: nclude

Если поставить C:\path1\path2 включить каталог, то в конечном итоге с помощью #include <..\path1.h>

В случае #include "quotes.h" - Visual Studio будет искать файлы только в каталоге проекта, где хранятся ваши файлы. Если вы добавляете дополнительные файлы в некоторые подпапки в проекте, вам всегда нужно указать относительный путь (например, #include "subfolder\header.h").

Дайте мне знать, если вам нужно уточнить это.

+0

Большое спасибо за ваш ответ. – Allgaeuer

+0

@Allgaeuer не забывайте поднимать \ принимать ответ, если он вам помогает – Starl1ght

+0

Я только что редактировал мой третий вопрос, потому что этого было бы недостаточно, чтобы добавить «.» - Directoy в Include Directoryories MyProject.vcxproj. Не могли бы вы посмотреть второй раз? – Allgaeuer