2011-08-11 32 views
5

Tôi hiện đang chuyển dự án được xây dựng với qmake sang CMake.CMake + Qt: xác định thư mục đầu ra moc/ui

Trong phiên bản với qmake, trong file .pri, đã có

MOC_DIR = .moc/$${PLATFORM_NAME} 

rằng phép để sản xuất các tập tin tạm thời MOC trong một thư mục nào đó, giữ cho nguồn sạch. Làm thế nào để làm điều tương tự với CMake?

Lưu ý: với CMake, tôi sử dụng gói FindQt4.cmake và lệnh QT4_WRAP_CPP().

+5

Nói chung, bạn sử dụng công cụ xây dựng ngoài cây để giữ cho nguồn của bạn luôn sạch sẽ. Xem http://www.vtk.org/Wiki/CMake_FAQ#Out-of-source_build_trees – baysmith

Trả lời

4

Như baysmith cho biết, nếu mục tiêu của bạn là giữ cho thư mục nguồn của bạn luôn sạch sẽ, giải pháp thực sự là sử dụng tính năng xây dựng "out-of-source" của CMake. Nếu bạn đang sử dụng Windows, hãy đặt "Nơi xây dựng tệp nhị phân" vào một thư mục mới, khác với thư mục "Mã nguồn" ở đâu. Nếu bạn đang sử dụng Unix, nó sẽ giống như sau:

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

Bằng cách chạy CMake trên một thư mục khác, tất cả các tệp sẽ được chuyển vào thư mục đó và nguồn của bạn sẽ luôn sạch sẽ. (Lưu ý: thư mục xây dựng không phải nằm trong thư mục nguồn. Hãy xem CMake wiki để biết thêm chi tiết.)

Nếu "ngoài nguồn" không hoạt động cho bạn, tôi có thể tìm thấy tùy chọn khác. Dựa trên những gì tôi có thể nói từ tập tin Qt4Macros.cmake được cài đặt với CMake 2.8 của tôi, nó không thể truy cập như một tham số cấu hình. Đây là dòng có liên quan:

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

Cách giải quyết là để thay đổi tất cả MOC của bạn bao gồm các chỉ thị để xác định thư mục mà bạn muốn xây dựng để.

#include "moc/mainwindow.moc" 

Sau khi tạo thư mục moc bên trong thư mục build của tôi, không có xây dựng vấn đề, và tập tin MOC của tôi là trong thư mục mới.

Các vấn đề liên quan