Làm cách nào để đặt nhiều thư mục RPATH trên một mục tiêu trong CMake trên MacOS? Trên Linux, chúng ta chỉ có thể sử dụng một danh sách thư đại tràng được tách biệt:Cách đặt nhiều thư mục RPATH bằng CMake trên MacOS
set_target_properties(mytarget
PROPERTIES
INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/../thirdparty/lib"
)
trên hệ điều hành MacOS, chúng tôi về mặt kỹ thuật có thể thêm một dấu hai chấm tách ra danh sách và otool -l
nên hiển thị nó, nhưng những thư mục không được tìm kiếm:
set_target_properties(mytarget
PROPERTIES
INSTALL_RPATH "@loader_path/../lib:@loader_path/../thirdparty/lib"
)
Thông thường, nếu tôi định có nhiều thư mục RPATH trên MacOS, tôi sẽ gửi nhiều cờ liên kết và những cờ này sẽ hiển thị riêng với otool -l
. Một cái gì đó như:
g++-mp-4.7 mytarget.cpp -o mytarget -Wl,-rpath,@loader_path/../lib,-rpath,@loader_path/../thirdparty/lib
Mà cho:
Load command 15
cmd LC_RPATH
cmdsize 32
path @loader_path/../lib (offset 12)
Load command 16
cmd LC_RPATH
cmdsize 48
path @loader_path/../thirdparty/lib (offset 12)
Làm thế nào để tái tạo lại hành vi này với CMake?
.. hoặc sử dụng 'set_Property (MỤC TIÊU)' mà chấp nhận tính multivalue. – Tsyvarev
@wasthishelpful Làm việc như một say mê. Cảm ơn! – wyer33