Qt4 в Visual Studio 2008 - файлы редактора MOC исключен из сборки?

Я обычно использую BOOST_FOREACH:

#include <boost/foreach.hpp>

BOOST_FOREACH( vector_type::value_type& value, v ) {
    // do something with 'value'
}

Это работает над контейнерами STL, массивами, строками C-стиля, и т.д.

6
задан Helen 29 July 2009 в 19:37
поделиться

6 ответов

Проблема решена . Я обнаружил, что в моем вручную созданном файле .pro, описывающем мой проект, у меня был MOC_DIR, указанный как:

MOC_DIR = .moc

После импорта в каталог Visual Studio для «Сгенерированных файлов» было одинаково как для выпуска, так и Отлаживать. Итак, когда моей активной конфигурацией была, например, «Отладка», когда я сохранял файл, он был исключен из сборки, потому что он подходил для файла, связанного с выпуском - как и предлагали rpg и Эндрю. После изменения каталога на .moc \ $ (ConfigurationName) проблема больше не возникает (и я вижу 2 версии каждого сгенерированного файла в моем решении - по одной для каждой конфигурации).

Всем спасибо за вашу помощь!

7
ответ дан 16 December 2019 в 21:44
поделиться

Да, я использую последнюю версию VS Addin, и мой проект правильно отображается как проект Qt.

0
ответ дан 16 December 2019 в 21:44
поделиться

правильно ли вы настроили конфигурацию?

Откройте окно «Настройки конфигурации отладки» Установите следующие элементы, как указано ниже:

  • «Командная строка сборки» qmake -project & qmake & nmake debug
  • «Очистить команды» nmake debug-clean
  • «Перестроить командную строку» qmake & nmake debug

Повторите то же самое с конфигурацией выпуска

0
ответ дан 16 December 2019 в 21:44
поделиться

Я видел поведение исключения из сборки в VS2008 (VS 2003 тоже), но проект строится правильно. Когда вы изменяете файл moc'able, Qt придется заново создать файл moc'ed, потому что он устарел.

Я подозреваю, что алгоритм Qt выглядит примерно так:

  • определить, что файл был изменен
  • установить старый файл moc как исключенный из сборки
  • добавить новый файл в проект с тем же именем и включить его в сборка

Глядя на мой проект VS 2003, я вижу, что некоторые файлы moc_ * включаются дважды в проект, одна версия установлена ​​как исключенная из сборки, а другая нет.

0
ответ дан 16 December 2019 в 21:44
поделиться

Повторное создание файла .vsproj с помощью qmake может решить проблему.

Для каждого файла QObject, который у вас есть, подключаемый модуль QT создает файл moc_ для каждой конфигурации сборки (обычно только для отладки и выпуска). Когда вы меняете текущую конфигурацию, вы можете видеть, что знаки «Нет записи» переходят от одного файла к другому.
Файлы moc_ не должны изменяться при изменении файла .cpp. только когда вы изменяете файлы .h ... Все это приводит меня к мысли, что с вашей конфигурацией что-то не так, и лучший способ исправить это - воссоздать это с помощью qmake, используя что-то вроде этого:

qmake -spec win32-msvc2008
0
ответ дан 16 December 2019 в 21:44
поделиться

На самом деле, я нашел решение этой «особенности». Вы должны добавить ОБЕ файлы из GeneratedFiles \ Debug и GeneratedFiles \ Debug (или из других каталогов конфигураций). Qt исключит из сборки все, что не принадлежит текущему выбранному типу сборки.

1
ответ дан 16 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: