我尝试运行使用cmake生成的makefile。它会产生错误
ld: library not found for -lhello
clang: error: linker command failed with exit code 1 (use -v to see invocation)
错误:
我想我设置了正确的目录。如何解决这个错误?
答案 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目标。