2009-10-20 25 views
8

Tôi đang cố gắng tự động hoá quy trình xây dựng của mình với cmake. Hiện tại chỉ có một vấn đề:cmake: Cách tạo một tập lệnh sao chép các tệp Dữ liệu đi kèm với chương trình của tôi

Ở đâu, trong triết lý của cmake (nếu có), nơi tốt nhất để sao chép tệp dữ liệu.

Tôi có một thư viện và một vài ví dụ. Các ví dụ cần dữ liệu.

Tôi hiện làm như sau:

tôi sử dụng một lệnh tùy chỉnh trong mỗi ví dụ CMakeLists.txt để sao chép tất cả các dữ liệu vào CMAKE_CURRENT_BINARY_DIR trong một bước sau xây dựng. Tôi sử dụng điều này trong quy trình gỡ lỗi của mình, do đó, không có mục tiêu cài đặt nào được thực thi.

này hoạt động khá tốt, nhưng có nhược điểm nhất định:

  1. Việc sao chép xảy ra mọi dự án được xây dựng. Với VS 2005, điều này đôi khi xảy ra ngay cả khi nó không được xây dựng mới. Kể từ khi các thư mục dữ liệu lớn, việc sao chép mất thời gian, và nó có một chút khó chịu.
  2. Tôi chắc chắn rằng đây là một cách rất vụng về khi thực hiện việc này.

Tôi muốn sao chép những thư mục với đường dẫn thực thi, vì vậy tôi không cần gợi ý làm thế nào để thiết lập debug thư mục làm việc

Thời gian hoàn hảo để sao chép các thư mục này sẽ có mặt tại cấu hình cmake/thời gian thế hệ , IT nhât thi tôi nghi vậy. Tôi có nên làm điều này không và tôi sẽ làm như thế nào?

Trả lời

12

Như thời gian gần đây thấy trong this question, bạn có thể sử dụng configure_file để sao chép các tập tin vào thư mục build:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/input.txt 
    ${CMAKE_CURRENT_BINARY_DIR}/output.txt COPYONLY) 

Đó có phải nó một lần tại thời gian xây dựng và chỉ khi cần thiết.

+2

Cảm ơn! Tôi ngạc nhiên rằng có rất ít câu trả lời cho câu hỏi này. CMake được sử dụng rộng rãi hiện nay, nhưng vẫn còn kém tài liệu. Rất ít người dường như thực sự cày xới cmake. – AndreasT

+2

'cmake --help-full' FTW! :-) – richq

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