Russian Qt Forum
Ноябрь 25, 2024, 00:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: в Студии 2008 не находит #include <*.h>  (Прочитано 7545 раз)
Alf
Гость
« : Октябрь 09, 2012, 16:55 »

В корне проекта есть файл "parameters.h". В файле проекта "myfolder1/myfile1.h" есть строка:
Код:
#include <parameters.h>

В Qt Creator проект собирается без ошибок.
Открываю этот же проект в MSVS 2008, получаю ошибку:
Цитировать
1>e:\programming\myproject\myfolder1\myfile1.h(4) : fatal error C1083: Cannot open include file: 'parameters.h': No such file or directory

Если в Студии в свойствах проекта в раздел "Additional Include Directories" добавляю руками ".\", то ошибка исчезает.

Вопрос: Что нужно добавить в Qt-ый проект (*.pro), чтобы в Студии не добавлять текущую директорию в инклуды руками ?

Пробовал вариант:
Код:
INCLUDEPATH += $$PWD
не помогло.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Октябрь 09, 2012, 16:59 »

Локальные инклюдники нужно указывать в "..."
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #2 : Октябрь 09, 2012, 17:40 »

Полегче надо. Я когда название темы прочитал, чуть пирожное целиком не проглотил. Еле выжил Веселый
Записан
Alf
Гость
« Ответ #3 : Октябрь 09, 2012, 18:41 »

Конечно, можно
Код:
#include "..\parameters.h"
Но если я изменю расположение файла "parameters.h", мне придётся все инклуды переписывать ?

Но самое главное, я не понимаю, почему в Qt Creator проект собирается, а в Студии 2008 - нет ! Почему есть разница в интерпретации инклудов ?
Записан
Bepec
Гость
« Ответ #4 : Октябрь 09, 2012, 19:29 »

Потому что есть стандарты.

В Visual если файл в твоей папке лежит - то "". Если искать по глобальным путям, то <>.

Не придётся тебе переписывать. Прописывай относительный путь, если у тебя уж такая запутанная структура проекта Улыбающийся
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #5 : Октябрь 10, 2012, 10:38 »

Ненене...
В студии в свойствах проекта добавьте дополнительный каталог включения "./myfolder1" (без кавычек, разумеется) и все наладится.
А вот какие символы использовать в инклудах - фиолетово.

А в PRO добавить надо
INCLUDEPATH += ./myfolder1
« Последнее редактирование: Октябрь 10, 2012, 10:43 от kai666_73 » Записан
V1KT0P
Гость
« Ответ #6 : Октябрь 10, 2012, 20:10 »

Конечно, можно
Код:
#include "..\parameters.h"
Но если я изменю расположение файла "parameters.h", мне придётся все инклуды переписывать ?
Добавь в Include Path путь к корню проекта(имеется ввиду не абсолютный путь а переменную $(ProjectDir) или $(SolutionDir)  ) и тогда вместо вот такого:
Цитировать
#include "..\class1.h"
#include "..\thirdparty\superliba.h"
Будешь писать такое:
Цитировать
#include "class1.h"
#include "thirdparty\superliba.h"
Записан
Alf
Гость
« Ответ #7 : Октябрь 11, 2012, 12:49 »

To V1KT0P:
Цитировать
Добавь в Include Path путь к корню проекта(имеется ввиду не абсолютный путь а переменную $(ProjectDir) или $(SolutionDir)  )

В своём первом посте я написал, что пробовал
Код:
INCLUDEPATH += $$PWD
Разве это не то же самое ?
Записан
Alf
Гость
« Ответ #8 : Октябрь 11, 2012, 13:05 »

Из ответов гуру GreatSnake и Bepec я понял, что файлы проекта лучше инклудить в кавычках, указывая относительный путь. Спасибо, впредь действительно буду придерживаться этого правила. Правда, среди всех постов я так и не нашёл ответа на свой совершенно конкретный вопрос  Улыбающийся

To Bepec:
Цитировать
Не придётся тебе переписывать. Прописывай относительный путь, если у тебя уж такая запутанная структура проекта.
Ещё как придётся ! Если я перемещу файл "parameters.h" из корня проекта в другую директорию, то все инклуды этого файла в проекте придётся переписывать !

To kai666_73:
Спасибо за внимание к теме, но Вы решили ответить не вникая в суть вопроса ))
Записан
Bepec
Гость
« Ответ #9 : Октябрь 11, 2012, 13:09 »

Я не гуру Веселый Я нуб Подмигивающий

Ответ на твою цитату - "А если ты файл удалишь, то тебе придётся вообще инклуды удалять". Веселый
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Октябрь 11, 2012, 14:00 »

Код:
INCLUDEPATH += $$PWD
Разве это не то же самое ?
PWD — это по-моему папка сборки, а не проекта. используй _PRO_FILE_PWD_ (папка, в которой лежит файл .pro) чтоб наверняка.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alf
Гость
« Ответ #11 : Октябрь 11, 2012, 14:56 »

To kambala:
Попробовал
Код:
INCLUDEPATH += $$_PRO_FILE_PWD_
Всё по-прежнему, в Creator-е проект собирается, в Студии не видит инклуда "parameters.h".
Записан
Serr500
Гость
« Ответ #12 : Октябрь 11, 2012, 16:43 »

PWD — это по-моему папка сборки, а не проекта.
Ни то, ни другое, хотя обычно совпадает с папкой проекта. http://qt-project.org/doc/qt-4.8/qmake-variable-reference.html#pwd
Цитировать
The PWD variable specifies the full path leading to the directory containing the current file being parsed. This can be useful to refer to files within the source tree when writing project files to support shadow builds.
Записан
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #13 : Октябрь 12, 2012, 11:40 »

Грязный хук
Код:
INCLUDEPATH += ./myFolder1/..

Сам правда не пробовал...  Веселый
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.071 секунд. Запросов: 23.