2012-07-21 10 views
7

Tôi có hai thư mục con docrootconfig trong dự án Qt của tôi. Các tệp trong các thư mục này sẽ được sao chép vào thư mục xây dựng bất cứ khi nào tôi xây dựng/gỡ lỗi dự án.QTCreator sao chép tệp vào thư mục đầu ra với INSTALLS

Kể từ https://stackoverflow.com/a/3991210/356726 điều này có thể bằng cách sử dụng INSTALLS (QtDoc), điều này có vẻ dễ dàng hơn nhiều so với chạy lệnh sao chép (ví dụ: here). Cách tiếp cận tương tự được mô tả here.

config.path = $${DESTDIR}/config 
config.files = config/* 
docroot.path = $${DESTDIR}/docroot 
docroot.files = docroot/* 
INSTALLS  += config docroot 

Tuy nhiên, khi tôi chạy một bản dựng trong Qt Creator, không có gì xảy ra. Điều này here nói rằng tôi cần phải chạy make install. Tôi có thể bằng cách nào đó kích hoạt/làm điều này từ bên trong Qt Creator tự động bất cứ khi nào tôi xây dựng. Tôi sẽ luôn cần phiên bản mới nhất của các tập tin.

EDIT: Cuối cùng tôi đã sử dụng $$OUT_PWD thay vì $$DESTDIR

Nhận xét ban đầu từ Logan here: "Chỉ cần một lưu ý: Tôi sử dụng $$OUT_PWD thay vì $$DESTDIR để làm cho nó làm việc Để tham khảo $$OUT_PWD là thư mục mà chương trình. được xây dựng, và $$PWD là thư mục mà chương trình đang được xây dựng từ các từ khác, đó là nơi tệp .pro là. "

Trả lời

13

Những gì bạn cần là một bước xây dựng tùy chỉnh.

  1. Chuyển sang Dự án Chế độ: nhấn Ctrl + 5.
  2. On Cài đặt Build tab dưới Build bước nhấp chuột vào Add Build Bước.
  3. Chọn Tạo từ trình đơn.
  4. Viết cài đặt vào Tạo đối số: hộp nhập văn bản.

(Phiên bản nơi tôi đã kiểm tra này là Qt Creator 2.4.1.)

+1

Phần của bạn là chính xác, cảm ơn. Tôi vẫn chỉ gặp sự cố với $$ {DESTDIR} chưa được đặt (nghĩ rằng nó được tự động đặt thành thư mục xây dựng), đã thử% {buildDir} cũng như không thành công. Vì vậy, phải tìm ra var đúng. –

4

Tôi đã sử dụng bóng Xây dựng trên Window 7 và tôi chạy vào cùng một vấn đề hơn bạn.

Hơn nữa, sau khi cài đặt và chạy INSTALLS tôi make install Tôi đã có thông báo sau:

Không có gì phải làm cho `cài đặt'.

Lý do là bạn phải tự đặt $$ DESTDIR.

Trong trường hợp của tôi, tôi muốn sao chép tập tin * .qml, đó là cách tôi đạt được nó:

# if you are using Shadow build, you need to get the output folder 
CONFIG(release, debug|release): DESTDIR = $$OUT_PWD/release 
CONFIG(debug, debug|release): DESTDIR = $$OUT_PWD/debug 

# if you are using normal build (non-shadow) that would have worked as well. 
CONFIG(release, debug|release): DESTDIR = release 
CONFIG(debug, debug|release): DESTDIR = debug  

QmlFiles.path = $$DESTDIR/Qml 
QmlFiles.files += $$files(Qml/*.qml) 

INSTALLS += QmlFiles 

EDIT:

tôi tìm ra rằng $$OUT_PWD có thể được sử dụng để tìm Shadow xây dựng Đường dẫn đầu ra.Vì vậy, tôi đã sửa mã cuối cùng đến gần với những gì bạn đang sử dụng.

+1

Gợi ý tốt, cảm ơn –