我目前正在将使用qmake构建的项目转移到CMake。
在带有qmake的版本中,在.pri文件中,有
MOC_DIR = .moc/$${PLATFORM_NAME}
允许在给定目录中生成MOC临时文件,保持源清洁。如何用CMake做同样的事情?
注意:使用CMake,我使用FindQt4.cmake
包和命令QT4_WRAP_CPP()
。
答案 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文件位于新目录中。