2013-01-15 16 views
8

Việc sử dụng bản dựng để hoạt động trong buntu 11.04, hiện tại ở mức 12.04 thì không.Không có quy tắc nào để đặt mục tiêu /usr/lib/someLib.so

Có xung đột với vị trí của someLib.so. Nghĩa là, nó đang nhìn sai vị trí. /usr/lib/here/someLib.so là vị trí chính xác.

Khi tôi chạy cmd cấu hình 'c' trong ccmake, nó nhận thấy xung đột, .. một lần. Bây giờ ccmake không còn phàn nàn nữa, nhưng sai lầm vẫn còn đó. runtime library [someLib.so] in /usr/lib may be hidden by files in: /usr/lib/here

Các dòng trong CMakeLists.txt gây xây dựng err là:

ADD_EXECUTABLE(test main.cpp) 
TARGET_LINK_LIBRARIES(test moreStuff evenMoreStuff) 

Tôi thấy vấn đề trong file build.make. Được tạo bởi ccmake. Tôi không thể tìm ra nơi ccmake đang nhận được ý tưởng rằng someLib.so là tại /usr/lib/, thay vì @/usr/lib/here/. Tôi nghĩ rằng nó sẽ là một tuyên bố SET() ở đâu đó. Tôi không tìm thấy nó.

1) Tệp cấu hình (ccmake 'c' cmd) được gọi là gì? Nó sẽ ở đâu (cùng một thư mục?)? Tôi tính nếu tôi xóa nó, tôi sẽ có thể nhìn thấy lỗi một lần nữa. (Thay đổi CMakeFile.txt dường như không làm điều đó.)
2) Làm thế nào tôi có thể tìm ra vị trí của someLib.so đang được thiết lập? (Tôi đang tìm gì?)

Tôi ghét CCMAKE. Cảm ơn

Trả lời

1

Tôi có thể nói rằng đây là sự cố với một trong các lệnh gọi hàm find_library. Nếu tôi nhớ chính xác điều này đã xảy ra khi môi trường của bạn trỏ đến hai vị trí khác nhau mà cả hai đều chứa một tệp thư viện có cùng tên.

Bạn có thể ngăn điều này xảy ra bằng cách thay đổi môi trường để không trỏ đến cả hai vị trí hoặc sử dụng một trong NO _ * _ PATH với lệnh gọi find_library để ngăn cmake tìm cả hai vị trí (ví dụ: bạn có thể xác định đường dẫn của riêng mình cho find_library và sử dụng này NO_DEFAULT_PATH để ngăn chặn cmake từ việc sử dụng đường dẫn môi trường - xem tài liệu: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:find_library)

find_library (someLib_location tÊN someLib PATHS/usr/lib/đây/NO_DEFAULT_PATH)

về 1) tôi nghĩ rằng họ đang gọi Tệp CMakeCache nhưng cách an toàn nhất để đi chỉ đơn giản là xóa toàn bộ cấu trúc xây dựng (không phải là vấn đề nếu bạn đang xây dựng nguồn)

Về 2) Tôi sẽ tìm kiếm throug file CMakeList.txt theo tên thư viện (không .so hậu tố và tiền tố lib như những người đang probbably bổ sung bởi các biến CMAKE_FIND_LIBRARY_PREFIXES và CMAKE_FIND_LIBRARY_SUFFIXES)

+1

Các someLib.so chỉ tồn tại trong một địa điểm. Có điều gì đó nói với CMAKE rằng nó tồn tại sai trong/usr/lib. CMAKE lấy dữ liệu môi trường ở đâu? Có một số lệnh CMAKE làm điều đó? Không có gì trong env đó là thiết lập nó. Có các tệp/cài đặt môi trường hệ thống khác mà tôi cần kiểm tra không? Cảm ơn – Doug

+1

Hm Tôi chưa bao giờ có loại vấn đề đó ... Bạn nên thử hỏi câu hỏi này trên danh sách gửi thư của CMake http://www.cmake.org/cmake/help/mailing.html –

+1

Vấn đề là CMAKE của một dự án các tệp tham chiếu đến các tệp CMAKE của một dự án khác. Vì vậy, một dự án kế thừa các thiết lập của một dự án khác. Vì vậy, theo một cách buồn, các thiết lập của dự án này được gắn với nhau, hoặc khác, .... – Doug

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