2011-02-08 30 views
7

cấu trúc thư mục của dự án của tôi là về cơ bản như sau:Có CMake đặt tạo ra mã nhị phân trong một cấu trúc thư mục cụ thể với tài sản

root/src

root/tài sản

root/thư viện

tôi hiện có CMake được thiết lập để biên dịch nguồn, biên dịch thư viện và sau đó liên kết chúng, bằng cách gọi thực hiện từ thư mục gốc.

Sau đó, tôi phải di chuyển tệp thực thi theo cách thủ công vào thư mục nội dung gốc để nó chạy, vì đó là nơi mà nó mong đợi (và chúng tôi muốn kiểm tra cấu trúc thư mục của chúng tôi trong nội dung gần với những gì chúng tôi mong đợi khi nó được thực hiện).

Vì vậy, có cách nào để yêu cầu CMake tự động gắn vào nhị phân đã biên dịch trong thư mục đó, cũng như sao chép nội dung không? Kể từ khi chúng tôi đang làm ra của xây dựng nguồn, gắn bó thực thi trở lại vào thư mục tài sản của dự án nguồn ban đầu có vẻ kỳ lạ.

Tóm lại, có hai câu hỏi: Có cách nào để CMake sao chép nội dung cũng như mã và có cách nào để sao chép tệp thực thi được tạo ra đến một vị trí cụ thể trong cây xây dựng không?

Bất kỳ trợ giúp nào sẽ được đánh giá cao --- cảm ơn bạn!

Trả lời

9

Dưới đây là một ví dụ đơn giản với một cấu trúc như của bạn:

  • root/src/main.cpp (chỉ nguồn tập tin)
  • root/tài sản (nơi mà tôi muốn thực thi để đi)

Dưới đây là các tập tin cmake:

PROJECT(HelloCMake) 
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${HelloCMake_SOURCE_DIR}/assets) 
add_executable (HelloCMake src/main.cpp) 

Khi tôi xây dựng chống lại điều này sử dụng Visual Studio tôi nhận được outp ut được đặt trong thư mục gốc/asset/debug. Tôi sẽ phải đào để tìm ra cách để thoát khỏi thư mục cấu hình thêm (gỡ lỗi). Không hoàn hảo, nhưng hy vọng rằng bạn sẽ đi đúng hướng.

Chỉnh sửa ... Thậm chí tốt hơn:

INSTALL(TARGETS HelloCMake DESTINATION ${HelloCMake_SOURCE_DIR}/assets) 
+0

Điều này dường như làm việc một cách hoàn hảo cho dự án của chúng tôi. "làm cho cài đặt" và cả hai VS dính các công cụ ở đúng nơi, có vẻ như! (Chỉ có rất ít suy nghĩ về nó là nó có vẻ như nó mis-bằng cách sử dụng lệnh cài đặt, mà tôi là hơi lạ, nhưng nó hoạt động! Không chắc chắn làm thế nào khác nó sẽ được thực hiện.) – Kozaki

+0

Đây là vàng cho các dự án Cmake với độ phức tạp nhất định – GameDeveloper

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