Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake 设置使用错误参数数调用的\u目标\u属性?_Cmake - Fatal编程技术网

Cmake 设置使用错误参数数调用的\u目标\u属性?

Cmake 设置使用错误参数数调用的\u目标\u属性?,cmake,Cmake,以下是我的简单CMakeLists.txt文件: 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 (libusb

以下是我的简单CMakeLists.txt文件:

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)
这给了我一个错误:
CMakeLists.txt:12处的CMake错误(设置目标属性):
设置使用不正确的参数数调用的\u目标\u属性

CMakeLists.txt:13处的CMake错误(设置目标属性):
设置使用不正确的参数数调用的\u目标\u属性 这些是第二个和第三个set_target_属性。第一组\u目标\u属性从未出现过此问题?

(如果您还没有意识到,我正在尝试构建usbmuxd-1.0.4)

SET\u TARGET\u属性的格式是:

SET_TARGET_PROPERTIES(
    target1 target2 ... targetM
    PROPERTIES 
    prop1 val1 prop2 val2 ... propN valN
)
出现问题的原因是变量LIBUSBMUXD_VERSION和LIBUSBMUXD_SOVERSION未定义,因此命令的语法为:

SET_TARGET_PROPERTIES(target PROPERTIES name)
而不是:

SET_TARGET_PROPERTIES(target PROPERTIES name value)

要解决这个问题,请尝试引用变量;使用“${LIBUSBMUXD_SOVERSION}”应该确保即使变量未定义,它也会接受空字符串的值,从而遵守语法。

最后一句话正好解决了我的问题。不幸的是,我只能对你的答案投一次赞成票。谢谢我可以把列表作为值吗?例如,如何使用多个标志设置
LINKER\u标志
?如何定义空变量?