2011-08-11 81 views
5

我目前正在將使用qmake構建的項目轉移到CMake。CMake + Qt:定義moc/ui輸出目錄

與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

回答

4

正如baysmith所說,如果您的目標是保持源目錄清潔,真正的解決方案是使用CMake的"out-of-source"構建功能。如果您在Windows上,請將「將構建二進制文件的位置」設置爲與「源代碼位置」目錄不同的新目錄。如果你在Unix上,它是這樣的:

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

通過在不同的目錄下運行CMake的,所有構建文件都將進入該目錄,和你的源代碼將保持清潔。 (注意:構建目錄不一定要在源代碼目錄中,詳情請參閱CMake wiki)。

如果「源代碼外」不適用於您,我能夠找到一個其他選項。根據我可以從我的CMake 2.8安裝的Qt4Macros.cmake文件中得知,它不能作爲配置參數訪問。下面是相關線路:

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

解決辦法是改變所有的MOC包括指令,以指定你想建立子文件夾。

#include "moc/mainwindow.moc" 

創建我的build目錄裏面的moc目錄後,沒有出現問題的建築,和我的MOC文件是在新目錄中。