我目前正在将使用 qmake 构建的项目转移到 CMake。
在带有 qmake 的版本中,在 .pri 文件中,有
MOC_DIR = .moc/$${PLATFORM_NAME}
允许在给定目录中生成 MOC 临时文件,保持源代码清洁。如何用 CMake 做同样的事情?
注意:对于 CMake,我使用FindQt4.cmake
package 和 command QT4_WRAP_CPP()
。
正如baysmith 所说,如果您的目标是保持源目录清洁,那么真正的解决方案是使用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 文件在新目录中。