5

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

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

MOC_DIR = .moc/$${PLATFORM_NAME}

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

注意:对于 CMake,我使用FindQt4.cmakepackage 和 command QT4_WRAP_CPP()

4

1 回答 1

4

正如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 文件在新目录中。

于 2011-08-21T02:45:24.573 回答