找不到CMake库

时间:2017-12-07 08:38:45

标签: cmake

我尝试运行使用cmake生成的makefile。它会产生错误

ld: library not found for -lhello
clang: error: linker command failed with exit code 1 (use -v to see invocation)

文件目录是: enter image description here

cmakelists.txt是: enter image description here

main.c文件是: enter image description here

错误: enter image description here 我想我设置了正确的目录。如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

如果要链接库,CMake有一个系统。对于许多标准库,我们有cmake模块,允许您使用find_package命令。这将为包含目录和库设置一些变量。如果您的图书馆没有这样的内容,您可以使用find_path作为包含文件,使用find_library搜索图书馆。

以下是你可以做的事情(未经测试,只是出于我的想法):

add_executable(main main.c)

target_include_directories(
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
    PUBLIC ${CMAKE_SOURCE_DIR}/include/hello
)

find_library (
    HELLO_LIB
    NAMES hello libhello # what to look for
    HINTS "${CMAKE_SOURCE_DIR}/lib" # where to look
    NO_DEFAULT_PATH # do not search system default paths
)

# check if we found the library
message(STATUS "HELLO_LIB: [${HELLO_LIB}]")

if (NOT HELLO_LIB)
    message(SEND_ERROR "Did not find lib hello")
endif

target_link_libraries(main
    ${HELLO_LIB}
)

使用message调试您的cmake文件。如果您在cmake中定义库,则可以直接链接到cmake目标。