Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1

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

29.08.2012, 12:18. Показов 5356. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru