CMake + Qt: определить выходной каталог moc / ui - PullRequest
5 голосов
/ 12 августа 2011

В настоящее время я передаю проект, созданный с помощью qmake, в CMake.

В версии с qmake в файле .pri было

MOC_DIR = .moc/$${PLATFORM_NAME}

, которое позволило создатьMOC временные файлы в данном каталоге, сохраняя исходные коды в чистоте.Как сделать то же самое с CMake?

Примечание: с CMake я использую пакет FindQt4.cmake и команду QT4_WRAP_CPP().

1 Ответ

4 голосов
/ 21 августа 2011

Как говорит Бэйсмит, если ваша цель состоит в том, чтобы поддерживать исходный каталог в чистоте, реальное решение состоит в том, чтобы использовать сборку CMake .Если вы работаете в Windows, задайте для «Где создавать двоичные файлы» новый каталог, отличный от каталога «Где находится исходный код».Если вы работаете в Unix, это выглядит примерно так:

cd <source directory>
mkdir build
cd build
cmake ..
make

Запустив CMake в другом каталоге, все файлы сборки перейдут в этот каталог, и ваши исходные коды останутся чистыми.(Примечание: каталог сборки не обязательно должен находиться внутри исходного каталога. Для получения более подробной информации см. CMake wiki .)

Если «вне источника» не работаетдля вас я смог найти еще один вариант.Исходя из того, что я могу сказать из файла Qt4Macros.cmake, установленного с моим CMake 2.8, он недоступен в качестве параметра конфигурации.Вот соответствующая строка:

SET(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})

Обходной путь - изменить все директивы включения MOC, указав подпапку, в которую вы хотите построить.

#include "moc/mainwindow.moc"

После создания moc внутри моей директории сборки, проблем со сборкой не было, и мой файл MOC был в новой директории.

...