2010-07-11 23 views
12

Đây là đơn giản tập tin CMakeLists.txt tôi:set_target_properties được gọi với số lượng đối số không chính xác?

include_directories (${CMAKE_SOURCE_DIR}/common) 
find_package(Threads) 

add_library (libusbmuxd SHARED libusbmuxd.c sock_stuff.c ${CMAKE_SOURCE_DIR}/common/utils.c) 
find_library (PTHREAD pthread) 
target_link_libraries (libusbmuxd ${CMAKE_THREAD_LIBS_INIT}) 

# 'lib' is a UNIXism, the proper CMake target is usbmuxd 
# But we can't use that due to the conflict with the usbmuxd daemon, 
# so instead change the library output base name to usbmuxd here 
set_target_properties(libusbmuxd PROPERTIES OUTPUT_NAME usbmuxd) 
set_target_properties(libusbmuxd PROPERTIES VERSION ${LIBUSBMUXD_VERSION}) 
set_target_properties(libusbmuxd PROPERTIES SOVERSION ${LIBUSBMUXD_SOVERSION}) 

install(TARGETS libusbmuxd 
    ARCHIVE DESTINATION lib${LIB_SUFFIX} 
    LIBRARY DESTINATION lib${LIB_SUFFIX} 
) 
install(FILES usbmuxd.h usbmuxd-proto.h DESTINATION include) 

này mang lại cho tôi một lỗi:
CMake error at CMakeLists.txt:12 (set_target_properties):
set_target_properties called with incorrect number of arguments

CMake error at CMakeLists.txt:13 (set_target_properties):
set_target_properties called with incorrect number of arguments
Đó là những set_target_properties thứ hai và thứ ba. Các set_target_properties đầu tiên không bao giờ có vấn đề đó?
(Nếu bạn chưa nhận ra đã có, tôi đang cố gắng để xây dựng usbmuxd-1.0.4)

Trả lời

29

Định dạng của SET_TARGET_PROPERTIES là:

SET_TARGET_PROPERTIES(
    target1 target2 ... targetM 
    PROPERTIES 
    prop1 val1 prop2 val2 ... propN valN 
) 

Lý do cho vấn đề của bạn là các biến của bạn LIBUSBMUXD_VERSION và LIBUSBMUXD_SOVERSION là không xác định, và vì vậy cú pháp của lệnh của bạn là:

SET_TARGET_PROPERTIES(target PROPERTIES name) 

Thay vì:

SET_TARGET_PROPERTIES(target PROPERTIES name value) 

Để khắc phục điều này, hãy thử trích dẫn các biến; sử dụng "$ {LIBUSBMUXD_SOVERSION}" phải đảm bảo rằng giá trị của chuỗi trống sẽ được tính ngay cả khi biến không được xác định, do đó tôn trọng cú pháp.

+2

Câu cuối cùng là chính xác những gì đã giải quyết được vấn đề của tôi. tiếc là tôi có thể upvote câu trả lời của bạn chỉ một lần. Cảm ơn! – ollo

+0

Tôi có thể đặt một danh sách dưới dạng giá trị không? Tức thì, bạn sẽ đặt 'LINKER_FLAG' bằng nhiều cờ như thế nào? – Royi

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