Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте. Возникла ситуация, которую хочется правильно разрешить:
"Есть юнит (пусть будет юнит №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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
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 файл туда вставить код а ещё нужно создать input.txt в проекте как это сделать в...

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

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

Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
а что там понимать, если код менялся с последнего построения то нужно если нет то не нужно....
При изменении одной буковки в исходнике будет перекомпилированы все cpp-файлы, включенные через #include. Вышел писал об этом
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.09.2012, 10:47
Цитата Сообщение от kzru_hunter Посмотреть сообщение
вдруг этот же модуль понадобился в другом проекте и тебе к первую очередь нужно подключить его к проекту
У Билдера есть неплохие средства для этого; добавьте свой большой модуль в new package, скомпилируйте его - и он будет храниться как bpl-библиотека в соотв. папке (Projects-Bpl), а объектные модули - Projects-Lib. Нужно будет только "отложить" файлик BigMod.h для дальнейшего применения.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
03.09.2012, 16:14  [ТС]
Цитата Сообщение от 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
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.09.2012, 16:41
Чёт я абсолютно "не в теме", может и не пойму..., - имеется программный код на С++ в конкретной папке, который может компилироваться в некий самостоятельный модуль, используя при этом большое количество подмодулей, код для которых содержится в таком же количестве вложенных подкаталогов. Желательно теперь это "громодье" копировать в папки с другими проектами и подключать это к ним простым движением? Я так пока это понял. Так не проще ли состряпать новый - пусть даже невизуальный - компонент и включать его в новые проекты, не таская по диску весь этот "джентельменский набор"?
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
03.09.2012, 17:24  [ТС]
Цитата Сообщение от 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
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 18:17
Цитата Сообщение от kzru_hunter Посмотреть сообщение
пример, ты создал какой-нибудь большой/огромный модуль и ты его используешь в своем проекте.
Потом вдруг этот же модуль понадобился в другом проекте и тебе к первую очередь нужно подключить его к проекту перед тем, как использовать.
Гарантирую, это будет не так то просто. В подтверждение к этим словам прикрепляю тестовый проект. Попробуйте в нем исправить ошибки, а точнее подключить модуль BiggestModule. На подключение уйдет много времени и соответственно возникает вопрос: "Как сделать так, чтобы любой модуль можно было проще/быстро подключить к проекту?"
1. Уже говорили про lib и dll
2.
Гарантирую, это будет не так то просто.
С кривыми руками будет все не просто...
Никто так не делает как сделали вы...

Файлы раскидыват по папкам sorce,include идр ... затем помещают в проект или делают make, с помощью которого пользователь собирает из исходников lib,dll или bpl если Builder. В дальнейшем ему остаётся лишь подключить их в свой проект.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.09.2012, 18:22
Тогда почему вы обошли вниманием такую очевидную вещь, как добавить к проекту файлик 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
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
03.09.2012, 18:50  [ТС]
nick42
Уже писал об этом: https://www.cyberforum.ru/post3413222.html

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

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

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

Если либа,юнит написаны калечно то тут нечего не поможет такие штуки надо выкидывать, а не компилить.
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
03.09.2012, 20:05  [ТС]
пора апгред делать, а не сидеть на lib и dll
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.09.2012, 20:09
Вы бы с ними разобрались сначала...
А то :
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Чет я не понял, как после компиляции пакета, подключить модуль.
Добавил в пакет все cpp файлы, скомпилировал, в папке $(BCB)\Projects\Lib появился .lib файл.
Я его добавил в свой проект (см. вложение пост №23) через Project->Add to project.exe, но все равно ошибка:
Unresolved external funcBiggestModule().
С bpl-файлом не знаю, что делать.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.09.2012, 21:51
Цитата Сообщение от kzru_hunter Посмотреть сообщение
Уже писал об этом: Заставить видеть .cpp файл без использования Project->Add to project
... значит, добавить к проекту файл *.cpp - это недопустимо, а добавить к тому же проекту файл TTHFile.lnk (это из вашего же примера) - конечная цель?! И после этого ...
Цитата Сообщение от kzru_hunter Посмотреть сообщение
разработчки билдера - олухи
. Я не хотел бы обострять, но... Вам известно значение понятия "паранойя"?
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
04.09.2012, 05:11
Попробую угадать желания топикстартера и систематизировать озвученое.
Цель: подключить к проекту сложную структуру библиотек минимальными телодвижениями.
Варианты решения:
  • Вариант 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
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
04.09.2012, 05:13
Цитата Сообщение от gumi250 Посмотреть сообщение
Вариант 3. Скомпилировать единую библиотеку *.lib, *bpl. Не устравает, т.к. хочется сохранить сложную структуру вложенности библиотек.
А как lib,dll мешает "сложной структуре вложености" ?

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

1. Искать в заданной папке все cpp-файлы.
2. Будет парсить и впихивать пути к этим файлам в указанный файл проекта.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2012, 05:13

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru