Bạn có thể sao chép các tập tin để xây dựng cây của bạn sử dụng add_custom_command
bằng cách thêm một cái gì đó như sau:
add_custom_command(TARGET MyExe POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/src/some_opencl_kernel.cl
$<TARGET_FILE_DIR:MyExe>
)
này thêm một sự kiện sau xây dựng với mục tiêu của bạn (tôi đã gọi nó là MyExe
) mà các bản sao tệp src/some_opencl_kernel.cl
vào cùng một thư mục trong cây xây dựng của bạn làm exe.
Có nhiều cách khác để sao chép tệp vào cây xây dựng, nhưng tôi thích cái này vì nó sử dụng "biểu thức máy phát" $<TARGET_FILE_DIR:MyExe>
để xác định vị trí thư mục của exe trong cây xây dựng. Điều này có thể khác nhau tùy thuộc vào ví dụ: xây dựng kiểu hoặc nền tảng, do đó, biểu thức máy phát điện là về cách đáng tin cậy nhất, đa nền tảng của việc xác định vị trí này tôi cảm thấy.
Để cài đặt, bạn chỉ có thể sử dụng lệnh install(FILES ...)
. Giả sử cho exe của bạn, bạn có cái gì đó như
install(TARGETS MyExe RUNTIME DESTINATION bin)
bạn chỉ có thể thêm:
install(FILES src/some_opencl_kernel.cl DESTINATION bin)
mà sẽ cài đặt nó để ${CMAKE_INSTALL_PREFIX}/bin/some_opencl_kernel.cl
cùng với exe.
Fraser Tôi thực sự đánh giá cao điều này, tôi đã tự hỏi nếu bạn có bất kỳ suy nghĩ nào về việc sử dụng 'configure_file' với' COPYONLY'? – Constantin
Điều đó làm việc quá và là tùy chọn dễ nhất nếu bạn không sao chép vào thư mục xây dựng nơi exes/libs đang được đặt, hoặc nếu thư mục đó là cố định. Ví dụ: MSVC nối thêm thư mục "Gỡ lỗi" vào ['RUNTIME_OUTPUT_DIRECTORY'] (http://www.cmake.org/cmake/help/v2.8.10/cmake.html#prop_tgt:RUNTIME_OUTPUT_DIRECTORY) cho các bản dựng Gỡ lỗi. Nếu bạn không bao giờ sử dụng trình tạo nhiều cấu hình, đây có thể không phải là vấn đề cho bạn và 'configure_file' sẽ là một tùy chọn đơn giản hơn. – Fraser