Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Общие файлы двух и более проектов.  (Прочитано 11240 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Boriska
Помогающий

ua
Offline Offline

« : 04-12-2015 02:48 » 

Привет форумчане.
Подскажите как это делать. Создаю отдельную папку, скажем С:\Routines.
Cоздаю класс.
Код: (C++)
h.file
#pragma once

class CRoutines
{
public:
        CRoutines();
        ~CRoutines();
};

cpp.file
#include "stdafx.h"
#include "Routines.h"

CRoutines::CRoutines()
{
}

CRoutines::~CRoutines()
{
}
Собираю проект все ОК.
В  Solution Explorer делаю Remove для h и cpp файлов класса.
Перемещаю их из папки проекта в С:\Routines
В Solution Explorer подключаю их из С:\Routines
Собираю
еrrors    1   IntelliSense: cannot open source file "stdafx.h"   
output  ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
почему в output все ОК, а в еrrors ошибка? и как сделать чтобы студия видела указанный
"stdafx.h"
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 04-12-2015 05:06 » 

Boriska, могу предложить некоторые варианты

1) в общем случае, для проекта можно указать пути поиска исходных файлов

свойства проекта - configuration properties - c/c++ - additional include directories

(Честно, никогда не пользовался этим способом - не доводилось. Но, думаю, он сработает)

2) воспользоваться утилитой subst для отображения папки на какой-то диск (скажем Y:)
(click to show)
C:\>subst /?
Сопоставление имени диска указанному пути.

SUBST [диск1: [диск2:]путь]
SUBST диск1: /D

  диск1:         Виртуальный диск, который сопоставляется указанному пути.
  [диск:]путь    Физические диск и путь,
                 которым сопоставляется виртуальный диск.
  /D             Удаление ранее созданного виртуального диска.

Введите SUBST без параметров для вывода текущего списка виртуальных дисков.

и в проекте явно использовать полный путь до файла (Y:/путь/файл) либо сочетать с вариантом 1

минус тут - при запуске системы нужно запускать утилиту, но это дело можно оформить, допустим, в виде батника и положить в автозагрузку

(Использую такой вариант в некоторых проектах - скорее по инерции, там, где изначально использовал. В новых проектах так не делаю )

3) в некоторой папке держать оттестированные сэмплы, но в проект копировать файлы , а не добавлять на них ссылки. Не страшно, что файлы будут разные в разных проектах - зато головной боли нету, проект целостный

(пользуюсь таким способом )

4) совместно с пунктом 3 - если есть несколько параллельно растущих и связанных проекта, есть резон разместить папки всех проектов в одной общей папке, плюс в этой же папке - папку common с общими файлами. Тогда из всех проектов можно получить доступ к общим файлам

../common/путь/файл

(пользуюсь таким способом)


Выбирай, что нравится )) Или ещё что подскажут
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #2 : 04-12-2015 11:09 » new

Алексей++
Пользуюсь VS2013. Снес интересующие меня файлы в Сommon.
Добираюсь туда #include "../../../../Common/Routines.h" я по этому
варианту пробовал раньше. Компилирует и ошибок нет. Но
вот не решил проблему с IntelliSense как. Компилирует то без ошибок,
но вот как заходишь в файл который лежит ../../../../Common/Routines.h,
или ../../../../Common/Routines.cpp, (подсвечивает - типа ему типы не известные,
cannot open source file "stdafx.h"....не красиво получается выглядит)
 Вот с этим можно как-то побороться?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 04-12-2015 12:26 » 

Boriska, я, может, не пойму, что ты хочешь добиться

вопросы:

1)
Цитата
Снес интересующие меня файлы в Сommon.
- Почему не устроила эта папка ? Почему снёс файлы из папки ?

2)
Цитата
Компилирует и ошибок нет.
- ну и отлично, на IntelliSence можно забить, я понятия не имею, как его дрессировать )) Особенно при открытии проекта, когда он всё подвешивает на минуту

Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #4 : 04-12-2015 15:39 » 

Алексей++,

1.
Цитата
Снес интересующие меня файлы в Сommon.
- Почему не устроила эта папка ? Почему снёс файлы из папки ?
Снёс - от слов отнёс, перенёс в папку Сommon.
Структура каталога....
Projs{
     Common
     Proj1
     Proj2
     Proj3
}
2.
Цитата
Компилирует и ошибок нет.
- ну и отлично, на IntelliSence можно забить, я понятия не имею, как его дрессировать )) Особенно при открытии проекта, когда он всё подвешивает на минуту
Ну как же забить.  Жжешь А делали его для чего. Ну мало того, что красиво код оформлен, так и сразу же видно где определено, где забыл, где чего то не видит....

3.
Цитата
я, может, не пойму, что ты хочешь добиться

ну буду делать несколько похожих программ. хотелось бы выделить общий код(диалоги, логику) в какую то папку
и потом в следующем проекте только создать ресурсы такие же и подкинуть логику. Но при этом хочется чтобы
и IntelliSence подсказывал  Улыбаюсь
« Последнее редактирование: 04-12-2015 15:41 от Boriska » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 05-12-2015 07:50 » 

разделяй пока по папкам внутри проекта, зачем неоттестированные сэмплы делать сразу общими ? Если понадобится  (и когда понадобится) - скопируешь нужную папку из отлаженного проекта в другой и там запользуешь
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #6 : 05-12-2015 15:10 » 

Цитата
по папкам внутри проекта
это мысль, надо будет попробовать.

Хотелось бы сделать Comon почему, сегодня тебе говорят удели внимание проекту1,
а завтра проекту2, (чтобы не заморачиваться с переносом)
Записан
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 07-12-2015 00:34 » 

Boriska,
Снес интересующие меня файлы в Сommon.
Добираюсь туда #include "../../../../Common/Routines.h" я по этому
варианту пробовал раньше. Компилирует и ошибок нет.
Не понял. В какой проект (проекты) включён файл Routines.cpp? Путь к Routines.h прописан прямо в include? Я бы делал так, как выше сказал Алексей: добавил в пути проекта.

Что до IntelliSense, то он мог сломаться, ребилд или удаление его базы данных может помочь.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 07-12-2015 14:10 » 

+1 к пути в проекте. За "../../../zhopa.h", а также "Z:/inc/zhopa.h" надо бить компилятором по голове.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Boriska
Помогающий

ua
Offline Offline

« Ответ #9 : 09-12-2015 15:22 » 

Не надо по голове. Убрал уже ../../../
Добавил в пути проекта. Компилирует.
Кстати раньше пути проекта добавлялись один под другим в список,
а сейчас в все в одну строку. Или я чет не путаю ?
Нак они так сделали ?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines