Vì vậy, nếu bạn đã có một nhị phân, bạn có thể thêm một rPath để nó trên OSX sử dụng 'install_name_tool', như vậy:Làm thế nào để bạn thêm một rpath cho một thực thi trong cmake trên xây dựng (không cài đặt) trên OSX?
install_name_tool -add_rpath @executable_path/blah
xcode thực hiện điều này tự động khi bạn đang xây dựng một gói ứng dụng.
Tôi biết rằng trong cmake bạn có thể sử dụng để thiết lập các install_name của thư viện chia sẻ:
set_target_properties(nshared PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")
Câu hỏi của tôi là, tương đương này để thêm một rPath đến một nhị phân là gì?
(đối với 'lý do tại sao bạn làm điều đó?'), Hãy xem otool -l trên bất kỳ ứng dụng nào trong Ứng dụng/thư mục của bạn và bạn sẽ thấy nhiều ứng dụng với các mục như:
.Load command 15
cmd LC_RPATH
cmdsize 36
path @executable_path/../../Frameworks/
này được tiêu chuẩn thực hành tôi chỉ cố gắng để làm điều đó trong cmake)
Theo kinh nghiệm của tôi, giải pháp này gây ra lỗi trên bất kỳ công trình xây dựng nào sau lần xây dựng đầu tiên từ một thư mục sạch. Lệnh POST_BUILD tùy chỉnh chạy trên mọi bản dựng cho dù mục tiêu đã lỗi thời hay không và install_name_tool trả về trạng thái thoát khác 0 và hiển thị thông báo rằng giá trị đường dẫn được thêm đã tồn tại trong tệp đích (vì nó được thêm vào trong lần xây dựng đầu tiên). Tài liệu của CMake dường như chỉ ra rằng lệnh POST_BUILD sẽ chỉ chạy nếu mục tiêu đã lỗi thời, nhưng điều đó dường như không đúng. – mjl5007
Câu trả lời này hoạt động –