Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
#1

Как в DEV C++ добавить опцию компилятора *cpp? - C++

21.04.2011, 10:45. Просмотров 1949. Ответов 11
Метки нет (Все метки)

Друзья! У меня в папке несколько файлов с расширением cpp и они все должны быть включены в компиляцию. Так, а по умолчанию компилятор компилит только ОДИН файл, а остальные должны быть подключены к нему явно
C++
1
#include "drugoi_fail.cpp"
Это плохо. Теперь, если компилить все эти файлы из командной строки:

C++
1
g++ *.cpp
То всё вроде бы ОК, опция *.cpp говорит, что надо компилить все файлы *.cpp
Но если добавить эту опцию к опциям копилитора СТАНДАРТНЫМ ПУТЁМ, то есть прописать её в соответтвующем окошке, то получается, что главный файл включается ДВАЖДЫ, то есть
C++
1
g++ main.coo *.cpp
это всё равно что

C++
1
g++ main.coo main.cp <другой_файл_.cpp>
Ага и получается две функции main.cpp, линковщик ругается на это.
Что делать, друзья? По идее надо смотреть где находятся опции которые по умолчанию и изменять их, а не добавлять. Но я не могу их найти. Всё уж перерыл. Извините, если что не так. Ваш kravam
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2011, 10:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в DEV C++ добавить опцию компилятора *cpp? (C++):

Непонятная ошибка компилятора Dev-Cpp - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; void s(int a) { cout&lt;&lt;a&lt;&lt;endl; } class matrix ...

Как подключить файл ресурсов Dev-Cpp - C++
Ну могу подключить файл ресурсов на Dev-Cpp файл: #include &lt;windows.h&gt; #include &quot;main.h&quot; ID_MENU MENU BEGIN POPUP &quot;&amp;File&quot;...

Предлагаю людям как усовершенствовать IDE Dev-Cpp 4.9.9.2 - C++
Значит, напомню, среда это давно не развивается уже. Если вы скачаете её, то в предлагаемых пакетах к этой среде последний g++ версии аж...

Как в Dev-Cpp (С++) скомпилировать исходный код в exe файл? - C++
Написал простейший код: #include int main() { std::cout &lt;&lt; &quot;Hello!&quot;; } Оно его компилирует в exe файл, но он...

Как создавать программы с графическим интерфейсом в среде Dev-cpp? - C++
Прошу, помогите, пожалуйста, сделать программу с графическим интерфейсом в Dev-cpp. Пока не могу даже разобраться с библиотеками. Уже...

Не могу исправить ошибку :113 H:\Dev-Cpp\Проекты\уроки\Безымянный3.cpp cannot convert `IDirectDraw7**' to `IDirectDraw**' for argument `2' to `HRESULT DirectDrawCreate(GUID*, IDirectDraw**, IUnknown*) - C++
Недавно начал изучать оконные программы и работу с DirectX. Но при написании программы столкнулся с проблемой: не могу исправить одну...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 12:50 #2
А разве в DEV-C++ нету стандартной возможности создавать проект из нескольких файлов? Тогда IDE автоматически настроит все строки запуска так как надо
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.04.2011, 13:13  [ТС] #3
Есть, но это заморочки. Это нужно не просто так, а тыкать на "создать проект", да не абы какой, а "консольное приложение", ну и прочее всё в таком же духе. Мне бы хоть какой конфигурационный файл с командной строкой увидеть, я бы вручную поменял его и всё.

А щас не знаю, что делать, склоняюсь к тому, что кропать экзешник, который переделывал бы СВОЮ командную строку и заменять им стандартный компилятор g++. IDE вызовет g++, но он будет уже подменён! И вместо вызова g++ будет вызван мой экзешник, который поправит командную строку, а потом вызовет g++ и передаст ему ИСПРАВЛЕННУЮ командную строку.

Как-то так. Щас штутдирую опции g++ и удивляюсь, как там нет опции "включить все *.cpp файлы"
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 13:35 #4
Я просто DEV C++ не видел, но ты по-моему каким-то мозахизмом занимаешься. Если ты пользуешься IDE, то играй по её правилам. Если хочешь делать по своему - компиляй без IDE а пиши свои Makefile'ы или скрипты компиляции

Цитата Сообщение от kravam Посмотреть сообщение
Как-то так. Щас штутдирую опции g++ и удивляюсь, как там нет опции "включить все *.cpp файлы"
Опять-таки не совсем понятно, что ты под этим подразумеваешь. Если ты внимательно прочтёшь документацию, то там так же нет опции "вскопать огород". Потому что твоё желание от этого отличается не сильно. В компилятор ты должен подать файлы, какие хочешь скомпилять. Понятия "все файлы" нету в принципе ни у одной программы, потому что "все файлы" должен передавать пользователь

Добавлено через 4 минуты
Кажется понял, в чём втоя непонятнка. В винде конструкцию "*.cpp" должна обрабатывать программа. В юниксе - это конструкция shell'а. Т.е. при запуске "g++ *.cpp" сам shell запустит строку "g++ t1.cpp t2.cpp t3.cpp". gcc он изначально юниксовый, а потому в его исходниках в приницпе нет обрабатывания каких-бы тони было регулярных выражений из командной строки
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.04.2011, 13:47  [ТС] #5
Ну ладно хоть поняли. Я бы и компилил сам, но дело в том, что я не знаю g++, мне очень трудно в нём разобраться. Я это всё возлагал на IDE и она меня всем устраивала и устраивает, кроме вот этой детали. Не хочу отказываться от удобства нажимать кнопку F9.
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 14:42 #6
Цитата Сообщение от kravam Посмотреть сообщение
Не хочу отказываться от удобства нажимать кнопку F9
Тогда делай так, как того требует IDE. Чем меньше будешь извращаться, тем меньше будет проблем.

Если ручками компилять, то:

Код
$ g++ t1.cpp -c -o t1.o
$ g++ t2.cpp -c -o t2.o
$ g++ t3.cpp -c -o t3.o
$ g++ t1.o t2.o t3.o -o a.exe
Если нужны оптимизации, то дополнительно подавай опции -O1, -O2 или -O3 (чем выше уровень, тем теортеически код лучше, но время компиляции дольше). По опции -Wall выдаётся основная масса полезных предупреждений. По опции -Wextra - ещё куча предупреждений. По опции -Werror предупреждения будут трактоваться как ошибки. Для начала вроде бы этого достаточно

Если нужно Makefile написать - почитай тут http://www.cyberforum.ru/cpp-linux/thread46096.html
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.04.2011, 16:39  [ТС] #7
Чё-то я подумал-подумал и отказался дублировать функционал IDE; тем более тут есть одна тонкость- написать-то прогу такую не так и сложно, но тут есть одно но. Можно сделать так, что она будет работать СО ВСЕМИ файлами *.cpp, находящимися в папке. Но в том-то и дело, что я ошибок не оберусь потому, что в процессе работы у меня в папке много левых файлов *.cpp, не относящихся к компилируемому никоим боком, черновые так называемые файлы.

Можно извратиться и указывать компилируемые файлы явно. Так это то и выйдет, что мне предлагает IDE.
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 17:16 #8
Цитата Сообщение от kravam Посмотреть сообщение
Можно извратиться и указывать компилируемые файлы явно
Наоборот. Это и есть нормальный режим работы. А указывать *.cpp - извращение. Случай, когда краткость НЕ есть сестра таланта
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.04.2011, 17:30  [ТС] #9
Что и я имею ввиду:
Щас IDE пердлагает: включить тот-то файл в проект или нет, потом тот-то файл, тот-то, тот-то и тот-то (не прописывать в инклудах, а в настройках галки ставить)

Удобно? Более или менее. Скропать прогу с подобным интрерфейсом я смогу, но зачем, если такой интерфейс предлагает DEV? Вот собсно сизифов труд и будет. Извращение и есть.

Что касаемо *.cpp, то использование его просто напросто непродуктивно в данном случае. Вообще же регулярные выражения благо, значение которого трудно переоценить, постоянно ищу строки в инклудах так:
C++
1
FIND "NULL" *.h > <имя файла>.txt
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 18:07 #10
Цитата Сообщение от kravam Посмотреть сообщение
Удобно? Более или менее. Скропать прогу с подобным интрерфейсом я смогу, но зачем, если такой интерфейс предлагает DEV? Вот собсно сизифов труд и будет. Извращение и есть.
В DEV C++ я не работал (и даже не видел, как оно выглядит). Но я видел, как это сделано в Borland'е и MSVS. Нужно добавить файл - взял и добавил без геморроя. Не надо никуда никаких галок ставить. Либо ты что-то делаешь не так, либо в DEV C++ сие криво реализовано (в последнее верится с трудом, даже несмотря на то, что это открытая бесплатная среда)
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
21.04.2011, 18:18  [ТС] #11
Цитата Сообщение от Evg Посмотреть сообщение
Нужно добавить файл - взял и добавил без геморроя
Завидую я им. Только подумал- и файл добавился...
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
21.04.2011, 18:23 #12
"без гемора" и "подумал и добавился" - как бы разные вещи. Хотя уже пошёл какой-то флуд, так что я откланиваюсь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2011, 18:23
Привет! Вот еще темы с ответами:

Библиотека (.h + .cpp) в папку include компилятора - C++
Здравствуйте! Написал библиотеку с вынесенным в разные файлы интерфейсом и реализацией (lib.h и lib.cpp), всем функциям в .h приписал...

настройка Dev-Cpp - C++
А как настроить Dev-Cpp чтобы он компилировал по стандарту ANSI C99? Перерыл все настройки - не получается.

Вопрос по Dev cpp - C++
Добрый вечер пипол.Такой вопрос напрягли делать проги на с++ работать на чудо програме Dev cpp вроде разобрался +/- все просто но вот...

Dev cpp + формоляпка - C++
Добрый день. я много раз видел как в dev cpp используют менеджер формы. т е можно на форму положить кнопочки иконки. и сделать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.04.2011, 18:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru