| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Запуск gcc через QProcess |
| Автор: andrew_121 18.5.2009, 06:40 |
| Утро доброе! Программа, используя QProcess запускает gcc компилятор. Так вот, собранная в дебаг-версии работает. Но собранная в релизе нет! Процессу передаются параметры для запуска компилера. stdout и stderr записываю в файл. Так вот компилер говорит что не найдены локальные хедеры, хотя они в каталоге с маин.срр. В аргументах передаю компилеру пути для айнклудов. В общем вопрос в том, почему в дебаг сборке работает, а в релиз нет?! |
| Автор: Любитель 18.5.2009, 11:40 |
| Модератор: Название темы должно отражать ее суть! Добавлено через 10 секунд PS Тему перименовал |
| Автор: andrew_121 18.5.2009, 19:56 |
| Гм... Все что только могло прийти в голову, перепробовал. Все то же |
| Автор: Любитель 18.5.2009, 21:53 |
| Как запускаешь программу? Что конкретно получаешь в stdout и stderr? Переменные окружения? |
| Автор: andrew_121 18.5.2009, 22:24 |
| Любитель, Да всё с программой нормально! Добавил отладочные сообщения! С путями все правильно. Так в дебаг сборке она работает. Может что-то с Кут? ) |
| Автор: Любитель 18.5.2009, 23:40 |
| Ну причём тут Qt как таковая?! Запускается ж у тебя процесс? Что выводит конкретно? |
| Автор: andrew_121 19.5.2009, 21:01 |
Говорит что мои хедеры не найдены. А они туточки data/*.h |
| Автор: SABROG 19.5.2009, 21:53 | ||
Туточки где именно?
|
| Автор: andrew_121 19.5.2009, 23:17 |
| SABROG, Вот структура каталогов. ./programm.exe ./release ./debug ./data ./mingw Так вот. Программа запускает g++ и передает ему аргументы. Тот должен скомпилить ./data/main.cpp, который включает в себя хедеры которые лежат там же. Но компилер сообщает что не найдены. |
| Автор: Любитель 19.5.2009, 23:20 |
| Ещё раз - покажи, как конкретно (аргументы) запускаешь, и покажи энввары в это время (из программы получи лучше). |
| Автор: SABROG 19.5.2009, 23:36 |
| А почему programm.exe находится не в release/debug? Ты её вручную оттуда перетаскиваешь что ли? |
| Автор: andrew_121 19.5.2009, 23:41 | ||||
Нет. Так настроил сборку. |
| Автор: SABROG 20.5.2009, 00:12 | ||
Слушай, жесть какая. Разве так нельзя?
А то мне кажется сплошной оверхед. |
| Автор: andrew_121 20.5.2009, 00:30 |
| SABROG, передавать аргументы процессу, рекомендуется через QLatin1String(). Да и не в этом вопрос. |
| Автор: Любитель 20.5.2009, 02:25 |
| Ок. А откуда берётся переменная curr у тебя? |
| Автор: andrew_121 20.5.2009, 02:50 | ||
Любитель
|
| Автор: SABROG 20.5.2009, 08:29 |
Где такое написано ? А у меня все-равно идеи закончились. |
| Автор: Любитель 20.5.2009, 15:31 |
| Мм.. А выложить полностью пример не можешь? |
| Автор: andrew_121 20.5.2009, 16:59 | ||||
зы. Давно бы выложыл, если бы мог. Я вот что узнал. В строках
как раз и открываются те файлы для записи(создаются). Так вот, в дебаг сборке, они создаются, а в релиз - нет. И ассерт молчит. Мистика да и только |
| Автор: SABROG 20.5.2009, 17:43 | ||||
Да вроде нет никакой мистики:
Возможно в release сборке какраз QT_NO_DEBUG определен.
|
| Автор: andrew_121 20.5.2009, 19:03 |
| SABROG, Проверил. Нет! Добавил строку DEFINES -= QT_NO_DEBUG, пересобрал, все тоже. |
| Автор: Любитель 20.5.2009, 19:32 |
| Дефан делается на уровне features/qt.prf. Т. е. оверрайдить его не так-то просто. |
| Автор: andrew_121 14.6.2009, 05:21 |
| Так я и не понял в чем проблема Программа работает ТОЛЬКО в дебаг сборке. мдя...Тема закрыта |
| Автор: SABROG 14.6.2009, 11:58 | ||
Замени Q_ASSERT на if() и попробуй еще раз. |
| Автор: andrew_121 14.6.2009, 13:39 |
Пробовал! QProcess-у передаются верные пути. А он ****, компилятору их передает не верно! п.с. сжал все upx-ом ))) Чтоб размер не пугал. Знаю что изврат, но что еще делать? |
| Автор: SABROG 14.6.2009, 14:25 |
Проблема с кодировкой может? |
| Автор: andrew_121 14.6.2009, 15:10 |
| Пробовал по разному. Еще один вариант, написать программку которая будет выводить аргументы командной строки. Вот тогда будет смешно, или не очень. Мне почему-то кажется что это глюк в QProcess. Вот еще попробую с этот вариант, и отпишусь. |