Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
1

Заставить видеть .cpp файл без использования Project->Add to project

29.08.2012, 12:18. Показов 4395. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Возникла ситуация, которую хочется правильно разрешить:
"Есть юнит (пусть будет юнит №1), который расположен в отдельной папке. В этой папке есть еще папка, в которой находится еще один юнит (пусть будет юнит №2).
Нужно заставить юнит №1 видеть юнит №2"

Хочу сделать, чтобы юнит №1 был связан с юнитом №2, и чтобы эта связка независела от настроек проекта или настроек главного юнита.
Хотя зависимость самого юнита №1 от настроек проекта разрешается.

Приложил тестовый проект (не компилируется, ошибка: [Error] Unresolved external 'CTestClass::Show(char *)' referenced from C:\USERS\2012\DOCUMENTS\TEST MODULE\MYMODULE\UNIT2.OBJ)
Вложения
Тип файла: rar test problem in big project.rar (3.9 Кб, 11 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2012, 12:18
Ответы с готовыми решениями:

Получаю сообщение "This file is used by the project manager only and should be treated like the project file main"
Сохраняю проект в С++Builder 6, закрываю его. Потом открываю и вместо только что набранного кода...

Обязательно ли включать cpp файлы посредством "add files to project"?
Когда нажимаю "add files to project", Microsoft Visual Studio 6.0. выдаёт "инструкция по адресу ......

Visual studio 2012 (создать empty project потом добавить .cpp файл туда вставить код)
нужно создать empty project потом добавить .cpp файл туда вставить код а ещё нужно создать...

Отсутствует пункт Project -> Add New Data Source
Здравствуйте, уважаемые форумчане. Вопрос у меня не по коду, но, как обычно, странный ) Никаким...

39
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
02.09.2012, 16:29 21
Author24 — интернет-сервис помощи студентам
а что там понимать, если код менялся с последнего построения то нужно если нет то не нужно....
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.09.2012, 16:32 22
И по наличию объектных файлов в папке.

А откуда желание делать это ручками не понятно...
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 07:02  [ТС] 23
Цитата Сообщение от Avazart Посмотреть сообщение
А откуда желание делать это ручками не понятно...
Например, ты создал какой-нибудь большой/огромный модуль и ты его используешь в своем проекте.
Потом вдруг этот же модуль понадобился в другом проекте и тебе к первую очередь нужно подключить его к проекту перед тем, как использовать.
Гарантирую, это будет не так то просто. В подтверждение к этим словам прикрепляю тестовый проект. Попробуйте в нем исправить ошибки, а точнее подключить модуль BiggestModule. На подключение уйдет много времени и соответственно возникает вопрос: "Как сделать так, чтобы любой модуль можно было проще/быстро подключить к проекту?"
Вложения
Тип файла: rar test Biggest Module.rar (9.5 Кб, 6 просмотров)
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
03.09.2012, 07:25 24
А вам обязательно, что бы каждый файл в своей папке лежал?
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 07:26  [ТС] 25
Цитата Сообщение от gumi250 Посмотреть сообщение
А вам обязательно, что бы каждый файл в своей папке лежал?
это я для примера сделал по одному файлу, в реальности может быть 2 и более файлов.
в отдельной папке они смотрелись бы лучше.

Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
а что там понимать, если код менялся с последнего построения то нужно если нет то не нужно....
При изменении одной буковки в исходнике будет перекомпилированы все cpp-файлы, включенные через #include. Вышел писал об этом
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
03.09.2012, 10:47 26
Цитата Сообщение от kzru_hunter Посмотреть сообщение
вдруг этот же модуль понадобился в другом проекте и тебе к первую очередь нужно подключить его к проекту
У Билдера есть неплохие средства для этого; добавьте свой большой модуль в new package, скомпилируйте его - и он будет храниться как bpl-библиотека в соотв. папке (Projects-Bpl), а объектные модули - Projects-Lib. Нужно будет только "отложить" файлик BigMod.h для дальнейшего применения.
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 16:14  [ТС] 27
Цитата Сообщение от nick42 Посмотреть сообщение
У Билдера есть неплохие средства для этого; добавьте свой большой модуль в new package, скомпилируйте его - и он будет храниться как bpl-библиотека в соотв. папке (Projects-Bpl), а объектные модули - Projects-Lib. Нужно будет только "отложить" файлик BigMod.h для дальнейшего применения.
Чет я не понял, как после компиляции пакета, подключить модуль.
Добавил в пакет все cpp файлы, скомпилировал, в папке $(BCB)\Projects\Lib появился .lib файл.
Я его добавил в свой проект (см. вложение пост №23) через Project->Add to project.exe, но все равно ошибка:
Unresolved external funcBiggestModule().
С bpl-файлом не знаю, что делать.

Вообще, самое правильное решение должно быть в следующей форме - никаких пакетов, dll-ок, lib-ов,
простое подключение: #include header.h и добавление спец. файла через Project->Add to project,
модуль автоматически становится частью проекта, а не отдельной частью, как в случае с пакетами, dll-ками, lib-ами.
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
03.09.2012, 16:41 28
Чёт я абсолютно "не в теме", может и не пойму..., - имеется программный код на С++ в конкретной папке, который может компилироваться в некий самостоятельный модуль, используя при этом большое количество подмодулей, код для которых содержится в таком же количестве вложенных подкаталогов. Желательно теперь это "громодье" копировать в папки с другими проектами и подключать это к ним простым движением? Я так пока это понял. Так не проще ли состряпать новый - пусть даже невизуальный - компонент и включать его в новые проекты, не таская по диску весь этот "джентельменский набор"?
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 17:24  [ТС] 29
Цитата Сообщение от nick42 Посмотреть сообщение
Желательно теперь это "громодье" копировать в папки с другими проектами и подключать это к ним простым движением? Я так пока это понял.
да, но чтобы при подключении это "громодье" становилось частью проекта, т.е. чтобы не приходилось его компилировать, как отдельную часть (как в случае с dll-ками и т.д.)

Цитата Сообщение от nick42 Посмотреть сообщение
Так не проще ли состряпать новый - пусть даже невизуальный - компонент
с этими компонентами тоже морока: кодить трудновато их, тестить, подключать.

Добавлено через 15 минут
Должна быть сто пудова такая возможность.
А если нету, то разработчки билдера - олухи.

Я упоминал недавно про MSBuild, так и не разобрался в нем. Состряпал следующий файл (Target1.targets):
C++
1
2
3
4
5
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Compile Include="Unit2.cpp" />
    </ItemGroup>
</Project>
и подключил его через Project->Add to project...

Но при компиляции вылазит предупреждение:
[MSBuild Warning] Target1.targets(1): Ignoring disabled import: C:\Users\2012\Documents\test MSBuild\Target1.targets
что оно означает - не пойму.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 18:17 30
Цитата Сообщение от kzru_hunter Посмотреть сообщение
пример, ты создал какой-нибудь большой/огромный модуль и ты его используешь в своем проекте.
Потом вдруг этот же модуль понадобился в другом проекте и тебе к первую очередь нужно подключить его к проекту перед тем, как использовать.
Гарантирую, это будет не так то просто. В подтверждение к этим словам прикрепляю тестовый проект. Попробуйте в нем исправить ошибки, а точнее подключить модуль BiggestModule. На подключение уйдет много времени и соответственно возникает вопрос: "Как сделать так, чтобы любой модуль можно было проще/быстро подключить к проекту?"
1. Уже говорили про lib и dll
2.
Гарантирую, это будет не так то просто.
С кривыми руками будет все не просто...
Никто так не делает как сделали вы...

Файлы раскидыват по папкам sorce,include идр ... затем помещают в проект или делают make, с помощью которого пользователь собирает из исходников lib,dll или bpl если Builder. В дальнейшем ему остаётся лишь подключить их в свой проект.
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
03.09.2012, 18:22 31
Тогда почему вы обошли вниманием такую очевидную вещь, как добавить к проекту файлик shluz.cpp приблизительно такого содержания__
C++
1
2
3
4
5
6
7
8
9
#include "BiggestModule/BiggestModule.cpp"
#include "BiggestModule/SubModule1/SubModule1.cpp"
#include "BiggestModule/SubModule1/subsub1/subsub1.cpp"
#include "BiggestModule/SubModule1/subsub2/subsub2.cpp"
#include "BiggestModule/SubModule1/subsub3/subsub3.cpp"
#include "BiggestModule/SubModule2/SubModule2.cpp"
#include "BiggestModule/SubModule2/subsub4/subsub4.cpp"
#include "BiggestModule/SubModule2/subsub5/subsub5.cpp"
. . .
- или я снова ничего не понял?
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 18:50  [ТС] 32
nick42
Уже писал об этом: https://www.cyberforum.ru/post3413222.html

Avazart
может передохнешь? в последнее время, я заметил, перестал прислушивать к пользователям
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 19:39 33
А я никогда не слушаю пользователей которые несут бред
Вложения
Тип файла: rar test Biggest Module.rar (2.19 Мб, 2 просмотров)
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 19:54  [ТС] 34
Цитата Сообщение от Avazart Посмотреть сообщение
А я никогда не слушаю пользователей которые несут бред
ты можешь просто взять и не лезть в эту тему? бред несешь и не замечаешь

то, что ты вложил, я и сам могу сделать.
я уже стал объяснять, что мне нужно.
все написано в теме, нужно просто понять.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 20:04 35
Цитата Сообщение от nick42 Посмотреть сообщение
Чёт я абсолютно "не в теме", может и не пойму..., - имеется программный код на С++ в конкретной папке, который может компилироваться в некий самостоятельный модуль, используя при этом большое количество подмодулей, код для которых содержится в таком же количестве вложенных подкаталогов. Желательно теперь это "громодье" копировать в папки с другими проектами и подключать это к ним простым движением? Я так пока это понял. Так не проще ли состряпать новый - пусть даже невизуальный - компонент и включать его в новые проекты, не таская по диску весь этот "джентельменский набор"?
Вас не только я не могу понять.

Если lib,dll,bpl,make файлы и другие предложенные варианты вас не устраивают, то ответ на вашу тему- никак.

Если либа,юнит написаны калечно то тут нечего не поможет такие штуки надо выкидывать, а не компилить.
0
1123 / 794 / 101
Регистрация: 01.02.2011
Сообщений: 1,878
Записей в блоге: 1
03.09.2012, 20:05  [ТС] 36
пора апгред делать, а не сидеть на lib и dll
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 20:09 37
Вы бы с ними разобрались сначала...
А то :
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Чет я не понял, как после компиляции пакета, подключить модуль.
Добавил в пакет все cpp файлы, скомпилировал, в папке $(BCB)\Projects\Lib появился .lib файл.
Я его добавил в свой проект (см. вложение пост №23) через Project->Add to project.exe, но все равно ошибка:
Unresolved external funcBiggestModule().
С bpl-файлом не знаю, что делать.
0
Практикантроп
4826 / 2718 / 526
Регистрация: 23.09.2011
Сообщений: 5,777
03.09.2012, 21:51 38
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Уже писал об этом: Заставить видеть .cpp файл без использования Project->Add to project
... значит, добавить к проекту файл *.cpp - это недопустимо, а добавить к тому же проекту файл TTHFile.lnk (это из вашего же примера) - конечная цель?! И после этого ...
Цитата Сообщение от kzru_hunter Посмотреть сообщение
разработчки билдера - олухи
. Я не хотел бы обострять, но... Вам известно значение понятия "паранойя"?
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
04.09.2012, 05:11 39
Попробую угадать желания топикстартера и систематизировать озвученое.
Цель: подключить к проекту сложную структуру библиотек минимальными телодвижениями.
Варианты решения:
  • Вариант 1. Добавить фалы библиотек *.h, *.cpp в проект. Не устраивает, т.к. при большом числе библиотек это довольно хлопотно.
  • Вариант 2. #include *.cpp. Не устраивает т.к. хочется раздельную компиляцию.
  • Вариант 3. Скомпилировать единую библиотеку *.lib, *bpl. Не устравает, т.к. хочется сохранить сложную структуру вложенности библиотек.
  • Вариант 4. Иметь рядом три файла *.h, *.cpp, *.obj, при этом при добавлении #include *.h, файл *.cpp вообще роли играть не будет, т.к. прилинковываться всегда будет *.obj. Если изменится *.cpp файл, то нужно перекомпилировать и соответствующий *.obj. Не устраивает т.к., что бы перекомпилировать *.cpp его нужно добавить в проект перекомпилировать, а потом удалить из проекта, потом переложить новый скомпилированый файл *.obj в нужную папку. Это все тоже довольно хлопотно, если изменений много. Даже если сделать отдельный тестовый проект который будет только тестить и компилить все библиотеки *.obj, то все равно придется потом раскладывать *.obj файлы по папкам библиотеки (Билдер скомпилит файлы *.obj в одну свою папку Release_Buld). Вот если бы Билдер мог класть *.obj рядом с его *.cpp, то это бы решило проблему. Хотя можно написать батничек для копирования новых скомпиленых *.obj файлов по папкам библиотеки.
Вопросы к топик стартеру:
  • Непонятно когда и на каком этапе файл библиотеки *.cpp должен компилится? Как Билдер должен узнавать, что нужно компилить *.cpp файл?
  • Вы собираетесь хранить одну папку с библитеоками для всех проектов или копировать папку с библиотеками из проекта в проект?
P.S. Я один не понимаю схемку топикстартера?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.09.2012, 05:13 40
Цитата Сообщение от gumi250 Посмотреть сообщение
Вариант 3. Скомпилировать единую библиотеку *.lib, *bpl. Не устравает, т.к. хочется сохранить сложную структуру вложенности библиотек.
А как lib,dll мешает "сложной структуре вложености" ?

Для решения этой извращенной задачи можно сделать программу которая будет:

1. Искать в заданной папке все cpp-файлы.
2. Будет парсить и впихивать пути к этим файлам в указанный файл проекта.
0
04.09.2012, 05:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2012, 05:13
Помогаю со студенческими работами здесь

Как создать Windows Form Project из Empty Project)
Если можно дайте ссылку для прочтения и самоизучения, либо покажите на пальцах,по пунктах.

Как убрать сообщение 'Add this project to Source Safe?'?
Подскажите как убрать сообщение 'Add this project to Source Safe?', которое появляетс при каждом...

Как заставить чтоб Dynamic Web Project работал с Tomcat и Derby DB
Привет всем! Уже замучился и никак не могу сделать проект. Нужна помощь сообщества. Что мне...

Project 1 не может найти файл
Программа не может найти .txt файл с данными для чтения и изменения данных. unit Unit1; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru