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

5

我目前正在将一个使用qmake构建的项目转换为CMake。

在使用qmake版本中,.pri文件中有以下内容:

MOC_DIR = .moc/$${PLATFORM_NAME}

允许在给定目录中生成MOC临时文件,保持源代码的清洁。如何使用CMake实现相同的功能?

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


5
通常情况下,你会使用外部目录构建来保持源文件的整洁。请参见http://www.vtk.org/Wiki/CMake_FAQ#Out-of-source_build_trees。 - baysmith
1个回答

4

正如baysmith所说,如果您的目标是保持源目录的清洁,真正的解决方案是使用CMake的“外部构建”功能。如果您在Windows上,将“二进制文件的生成位置”设置为一个新目录,与“源代码的位置”目录不同。如果您在Unix上,则操作类似于:

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

通过在不同的目录上运行CMake,所有的构建文件都将进入该目录,而您的源代码将保持干净。(注意:构建目录不必在源代码目录内。请参阅CMake维基了解更多详情。)
如果“out-of-source”对您无效,我找到了另一种选择。根据我从安装有CMake 2.8的Qt4Macros.cmake文件中所了解的,它不可作为配置参数访问。以下是相关行:
SET(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})

解决方法是更改所有MOC包含指令,以指定您要构建到的子文件夹。
#include "moc/mainwindow.moc"

在我的构建目录中创建了moc目录后,构建过程没有出现任何问题,并且我的MOC文件位于新目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接