tôi đã tạo ra một danh sách các tập tin sử dụng:Làm cách nào để cài đặt phân cấp tệp bằng cmake?
file(GLOB_RECURSE DEPLOY_FILES "${PROJECT_SOURCE_DIR}/install/*")
tôi muốn cài đặt tất cả các file trong/usr/myproject/nhưng tôi muốn duy trì cây tập tin vào thư mục cài đặt:
install/junk
install/other/junk2
install/other/junk3
Nếu tôi sử dụng:
install(FILES ${DEPLOY_FILES} DESTINATION "usr/myproject")
Tất cả các tập tin kết thúc trong/usr/myproject như:
/usr/myproject/junk
/usr/myproject/junk2
/usr/myproject/junk3
Tôi làm cách nào để lệnh cài đặt theo dõi đường dẫn tương đối?
Tôi đã làm việc xung quanh vấn đề này bằng cách thực hiện nó bằng tay trong một vòng lặp for:
set(BASE "${PROJECT_SOURCE_DIR}/install")
foreach(ITEM ${DEPLOY_FILES})
get_filename_component(ITEM_PATH ${ITEM} PATH)
string(REPLACE ${BASE} "" ITEM_PATH ${ITEM_PATH})
install(FILES ${ITEM} DESTINATION "usr/myproject${ITEM_PATH}")
endforeach()
... nhưng điều này là gây phiền nhiễu để làm. Chắc chắn có một cách dễ dàng hơn?
(Cant thấy bất cứ điều gì trong tài liệu cài đặt mặc dù ...)
Nó chỉ đơn giản là thú vị như thế nào f * & ing khó khăn họ có thể thực hiện một hoạt động ** cp -r' ** tầm thường. – ulidtko