CMake + Qt:定义moc / ui输出目录

时间:2011-08-11 22:19:21

标签: qt qt4 cmake moc

我目前正在将使用qmake构建的项目转移到CMake。

在带有qmake的版本中,在.pri文件中,有

MOC_DIR = .moc/$${PLATFORM_NAME}

允许在给定目录中生成MOC临时文件,保持源清洁。如何用CMake做同样的事情?

注意:使用CMake,我使用FindQt4.cmake包和命令QT4_WRAP_CPP()

1 个答案:

答案 0 :(得分:4)

正如baysmith所说,如果您的目标是保持源目录的清洁,真正的解决方案是使用CMake的"out-of-source"构建功能。如果您使用的是Windows,请将“在何处构建二进制文件”设置为新目录,这与“源代码在哪里”目录不同。如果你在Unix上,它会是这样的:

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

通过在另一个目录上运行CMake,所有构建文件都将进入该目录,并且您的源将保持干净。 (注意:构建目录不必位于源目录中。有关详细信息,请参阅CMake wiki。)

如果“out-of-source”对您不起作用,我可以找到另一个选项。根据我从CMake 2.8安装的Qt4Macros.cmake文件中可以看出的内容,它无法作为配置参数访问。这是相关的一行:

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

解决方法是更改​​所有MOC include指令,以指定要构建的子文件夹。

#include "moc/mainwindow.moc"

在我的构建目录中创建moc目录后,构建没有问题,我的MOC文件位于新目录中。