2010-10-03 32 views
12

Tôi có một dự án tôi đang làm việc với Qt Creator và tôi đang cố gắng thêm tệp tài nguyên của mình vào thư mục xây dựng (đầu ra) tự động. Tôi có các tệp trong thư mục dự án, nhưng tôi không biết cách chỉnh sửa tệp * .pro để làm cho tệp đó bao gồm các tệp nội dung bổ sung. (Nếu điều đó thậm chí có thể?)Bao gồm các tệp tài nguyên trong thư mục xây dựng Qt Creator

Có ai biết cách lấy các tệp nội dung chính xác như trong các thư mục đầu ra của tôi không?

EDIT:

Chỉ cần để mọi người đều biết chính xác những gì tôi đang cố gắng để làm ... Tôi muốn tự động sao chép FFmpeg như một thực thi vào xây dựng danh bạ của tôi. Bằng cách đó, nếu đầu ra xây dựng không tồn tại, nó sẽ được sao chép ngay trước khi ứng dụng được gỡ lỗi.

Tôi đang cố gắng ngăn chặn các hoạt động sạch từ xóa tài nguyên và tôi phải sao chép chúng lại nhiều lần. Ngoài ra ... Tôi làm việc trên nhiều máy tính và sử dụng SVN hoặc Dropbox, vì vậy tôi muốn giữ cho đường dẫn của tôi tương đối. Chúng sẽ thay đổi khi tôi chuyển từ máy này sang máy khác.

CUỐI CÙNG ĐÁP:

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    #in Windows, you can use & to separate commands 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILE(S) & 
    copyfiles.commands += @call copy ..\\$${TARGET}\\ffmpeg.exe $${DESTDIR}\\ffmpeg.exe 
} 

#for Mac 
macx { 
    #commands would go here if I had them 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

Trả lời

11

Nếu bạn muốn tự động sao chép các tập tin vào một thư mục sau khi tòa nhà, bạn có thể sử dụng một mục tiêu bài xây dựng.

Trong file pro của bạn:

win32 { 
    copyfiles.commands = @call copy <from> <to> 
} 
macx { 
    copyfiles.commands = cp <from> <to> 
} 
QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

Thay vì copy <from> <to> bạn rõ ràng có thể gọi một kịch bản tập tin/mẻ mà không nhiều bài bước xây dựng.

+0

Có thể là tương đối không? Bạn có ví dụ về điều đó không? – jocull

+0

Tất nhiên. Lệnh được thực thi chỉ là một lệnh shell thông thường được thực thi liên quan đến thư mục làm việc của bạn. – WolfgangA

+1

Nếu bạn không cần tài nguyên cho đến khi triển khai hoặc đóng gói, bạn cũng có thể thêm các quy tắc INSTALL bổ sung vào tệp .pro. – andref

5

Khám phá Qt Resource System.

Để thêm các tập tin tài nguyên vào dự án của bạn, bạn phải thêm dòng sau trong file .pro của bạn ..

RESOURCES = application.qrc

Ví dụ chi tiết có sẵn trong Qt Documents ..

Sau khi thêm vào tệp chuyên nghiệp, tệp .qrc riêng biệt sẽ được thêm vào dự án Qt của bạn mà bạn có thể nhấp đúp và thêm tài nguyên mong muốn của bạn như biểu tượng, tệp dịch, v.v.

Hy vọng nó sẽ giúp ..

+0

Không phải các tài nguyên này được biên dịch vào đầu ra chưa? Tôi có những thứ như các quy trình bên ngoài (* .exe files) mà tôi cần phải truy cập trong cùng thư mục với đầu ra được biên dịch của tôi. – jocull

+0

@jocull Có, vấn đề là những tập tin đó không thể được truy cập trực tiếp khi chuyển đổi sang tài nguyên. Tôi có một tệp XML mà tôi muốn có thể sửa đổi. Làm thế nào bạn thực sự giải quyết điều này một cách di động? Với các lệnh sao chép khác nhau cho mỗi hệ điều hành? – ierax

+0

Vâng, đó là những gì tôi đã phải làm trong * .pro. Hãy xem câu hỏi ban đầu, khi tôi chỉnh sửa câu hỏi đó với câu trả lời cuối cùng của tôi. – jocull

1

Bây giờ là năm 2012 và cả hai phương pháp này đều không hoạt động đối với tôi. Tôi nhận được lỗi này:

mingw32-make[1]: Leaving directory `C:/src/GL-Texture-build-desktop-Qt_in_PATH_Debug' 
/usr/bin/sh: copy: command not found 
mingw32-make[1]: *** [copyfiles] Error 127 
mingw32-make: *** [debug] Error 2 
00:28:19: The process "C:\QtSDK\mingw\bin\mingw32-make.exe" exited with code 2. 
Error while building/deploying project GL-Texture (target: Desktop) 
When executing step 'Make' 

Nhìn vào thông báo, tôi ngạc nhiên khi thấy rằng đang sử dụng vỏ sh, có thể là do trộn lẫn. Nhưng dù sao tôi đã giải quyết vấn đề này bằng cách sử dụng tương đương unix:

CONFIG(release, debug|release) { 
    DESTDIR = release 
} else { 
    DESTDIR = debug 
} 

#for Windows 
win32 { 
    copyfiles.commands += @echo NOW COPYING ADDITIONAL FILES & 
    copyfiles.commands += cp -r ../$${TARGET}/textures $${DESTDIR}/ 
} 

QMAKE_EXTRA_TARGETS += copyfiles 
POST_TARGETDEPS += copyfiles 

Điều này xảy ra trên Windows 7/QT 4.6.3.

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